首页 > 编程语言 >Java之API详解之Runtime的详细解析

Java之API详解之Runtime的详细解析

时间:2023-11-24 23:31:45浏览次数:49  
标签:Java getRuntime 内存大小 弹框 API new Runtime public


 3.1 概述

Runtime表示Java中运行时对象,可以获取到程序运行时设计到的一些信息

3.2 常见方法

常见方法介绍

我们要学习的Object类中的常见方法如下所示:

public static Runtime getRuntime()		//当前系统的运行环境对象
public void exit(int status)			//停止虚拟机
public int availableProcessors()		//获得CPU的线程数
public long maxMemory()				    //JVM能从系统中获取总内存大小(单位byte)
public long totalMemory()				//JVM已经从系统中获取总内存大小(单位byte)
public long freeMemory()				//JVM剩余内存大小(单位byte)
public Process exec(String command) 	//运行cmd命令

Java之API详解之Runtime的详细解析_System

代码示例:

public class RunTimeDemo1 {
    public static void main(String[] args) throws IOException {
        /*
            public static Runtime getRuntime() 当前系统的运行环境对象
            public void exit(int status) 停止虚拟机
            public int availableProcessors() 获得CPU的线程数
            public long maxMemory() JVM能从系统中获取总内存大小(单位byte)
            public long totalMemory() JVM已经从系统中获取总内存大小(单位byte)
            public long freeMemory() JVM剩余内存大小(单位byte)
            public Process exec(string command) 运行cmd命令
        */

        //1.获取Runtime的对象
        //Runtime r1 =Runtime.getRuntime();

        //2.exit 停止虚拟机
        //Runtime.getRuntime().exit(0);
        //System.out.println("看看我执行了吗?");


        //3.获得CPU的线程数
        System.out.println(Runtime.getRuntime().availableProcessors());//8
        //4.总内存大小,单位byte字节
        System.out.println(Runtime.getRuntime().maxMemory() / 1024 / 1024);//4064
        //5.已经获取的总内存大小,单位byte字节
        System.out.println(Runtime.getRuntime().totalMemory() / 1024 / 1024);//254
        //6.剩余内存大小
        System.out.println(Runtime.getRuntime().freeMemory() / 1024 / 1024);//251

        //7.运行cmd命令
        //shutdown :关机
        //加上参数才能执行
        //-s :默认在1分钟之后关机
        //-s -t 指定时间 : 指定关机时间
        //-a :取消关机操作
        //-r: 关机并重启
        Runtime.getRuntime().exec("shutdown -s -t 3600");


    }
}

Java之API详解之Runtime的详细解析_System_02

3.3 恶搞好基友

需求:

界面上方按钮默认隐藏

界面中间有一个提示文本和三个按钮

当你的好基友点击中间三个按钮的时候就在N秒之后关机,不同的按钮N的值不一样

任意一个按钮被点击之后,上方了按钮出现。当点击上方按钮之后取消关机任务

Java之API详解之Runtime的详细解析_Memory_03

Java之API详解之Runtime的详细解析_JVM_04编辑

public class Test {
    public static void main(String[] args) {
        new MyJframe();
    }
}

Java之API详解之Runtime的详细解析_JVM_05

public class MyJframe extends JFrame implements ActionListener {

    JButton yesBut = new JButton("帅爆了");
    JButton midBut = new JButton("一般般吧");
    JButton noBut = new JButton("不帅,有点磕碜");
    JButton dadBut = new JButton("饶了我吧!");


    //决定了上方的按钮是否展示
    boolean flag = false;


    public MyJframe() {
        initJFrame();


        initView();


        //显示
        this.setVisible(true);
    }

    private void initView() {

        this.getContentPane().removeAll();

        if (flag) {
            //展示按钮
            dadBut.setBounds(50, 20, 100, 30);
            dadBut.addActionListener(this);
            this.getContentPane().add(dadBut);
        }


        JLabel text = new JLabel("你觉得自己帅吗?");
        text.setFont(new Font("微软雅黑", 0, 30));
        text.setBounds(120, 150, 300, 50);


        yesBut.setBounds(200, 250, 100, 30);
        midBut.setBounds(200, 325, 100, 30);
        noBut.setBounds(160, 400, 180, 30);

        yesBut.addActionListener(this);
        midBut.addActionListener(this);
        noBut.addActionListener(this);

        this.getContentPane().add(text);
        this.getContentPane().add(yesBut);
        this.getContentPane().add(midBut);
        this.getContentPane().add(noBut);

        this.getContentPane().repaint();
    }

    private void initJFrame() {
        //设置宽高
        this.setSize(500, 600);
        //设置标题
        this.setTitle("恶搞好基友");
        //设置关闭模式
        this.setDefaultCloseOperation(3);
        //置顶
        this.setAlwaysOnTop(true);
        //居中
        this.setLocationRelativeTo(null);
        //取消内部默认布局
        this.setLayout(null);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object obj = e.getSource();
        if (obj == yesBut) {
            //给好基友一个弹框
            showJDialog("xxx,你太自信了,给你一点小惩罚");
            try {
                Runtime.getRuntime().exec("shutdown -s -t 3600");
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
            flag = true;
            initView();

        } else if (obj == midBut) {
            System.out.println("你的好基友点击了一般般吧");

            //给好基友一个弹框
            showJDialog("xxx,你还是太自信了,也要给你一点小惩罚");

            try {
                Runtime.getRuntime().exec("shutdown -s -t 7200");
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }

            flag = true;
            initView();


        } else if (obj == noBut) {
            System.out.println("你的好基友点击了不帅");

            //给好基友一个弹框
            showJDialog("xxx,你还是有一点自知之明的,也要给你一点小惩罚");

            try {
                Runtime.getRuntime().exec("shutdown -s -t 1800");
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }

            flag = true;
            initView();
        } else if (obj == dadBut) {
            //给好基友一个弹框
            showJDialog("xxx,这次就饶了你~");

            try {
                Runtime.getRuntime().exec("shutdown -a");
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }

        }
    }

    public void showJDialog(String content) {
        //创建一个弹框对象
        JDialog jDialog = new JDialog();
        //给弹框设置大小
        jDialog.setSize(200, 150);
        //让弹框置顶
        jDialog.setAlwaysOnTop(true);
        //让弹框居中
        jDialog.setLocationRelativeTo(null);
        //弹框不关闭永远无法操作下面的界面
        jDialog.setModal(true);

        //创建Jlabel对象管理文字并添加到弹框当中
        JLabel warning = new JLabel(content);
        warning.setBounds(0, 0, 200, 150);
        jDialog.getContentPane().add(warning);

        //让弹框展示出来
        jDialog.setVisible(true);
    }
}

Java之API详解之Runtime的详细解析_JVM_06



标签:Java,getRuntime,内存大小,弹框,API,new,Runtime,public
From: https://blog.51cto.com/u_16265376/8552290

相关文章

  • 数据结构之二叉堆(Java)
    一:概述二叉堆:二叉堆本质上是一种完全二叉树,它分为两个类型。最大堆最小堆二:最大堆与最小堆的具体说明<1>最大堆最大堆的任何一个父节点的值,值大于或等同于它左、右孩子节点的值。例子如下图所示:<2>最小堆最小堆的任何一个父节点的值,都小于或等于它的左、右孩子节点的值。例子如下图......
  • Java中常用的加密方式
    加解密算法应用场景加解密是什么?为什么要加密?加密类型都有哪些?有万能加密么?1)加密,顾名思义,添加密码,密码的作用是加密保护和安全认证。如果没有加密,即明文显示,那么很容易导致信息泄露;加密之后,未经授权的用户即使获得了信息,但不知秘钥,仍然无法了解信息的具体内容。2)加密算法大体......
  • JavaScript存在更新不存在插入操作
    [Updateifexistsoraddnewelementtoarrayofobjects-elegantwayinjavascript+lodash-StackOverflow](https://stackoverflow.com/questions/25764719/update-if-exists-or-add-new-element-to-array-of-objects-elegant-way-in-javascr)```js functionu......
  • java 拼图游戏
    界面代码packagenet.elaina.ui;importjavax.swing.*;importjavax.swing.border.BevelBorder;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjava.util.Ra......
  • JavaScript获取随机数
    获取随机数 Math.random()constnum=Math.random();此代码作用是获取一个范围在[0,1)之间的随机数。若要获取[100,1000)之间的随机数,可以通过一下方法:先获取[0,1000)之间的随机数constnum=Math.random()*1000;然后获取[100,1000)之间随机数//num1的范围是[0.1,1)const......
  • Java Learning Day1 关键字、标识符、注释、变量
    其实之前也学习过两个月的JAVA,跟着淘宝上买的王道Java课,每天看了1day,整个过程下来感觉什么都没有掌握,所以现在就打算重新学一次,从最开始的关键字开始,也就开通了博客,希望这次学习可以多多掌握一些吧。  关键字:小写、含有特殊含义的单词 标识符:方法名、类名、参数名、变量名......
  • 好用的IDEA插件——Apipost-Helper-2.0
    今天给大家推荐IDEA插件:ApipostHelper,比市面上很多产品好用并且完全免费!先说一下ApipostHelper的安装和使用安装在IDEA编辑器插件中心输入Apipost搜索安装:Apipost-Helper-2.0配置方法:使用ApipostIDEA插件前需要在IDEA设置中进行配置:云端域名默认为:https://sync-project-ide.a......
  • 软件测试/人工智能|教你如何使用ChatGPT的API
    简介自从有了ChatGPT之后,我每天都想去调戏它一番,自从开放了ChatGPT的API,我就想着通过API来使用ChatGPT,这样的话,速度上的体验应该会更好,本文就来介绍一下如何使用ChatGPT的API。环境准备在调用API之前,我们首先需要准备好我们的环境,一是我们需要安装openAI第三方库,OpenAI提供了一个......
  • Java泛型Generics​入门详解
    Java泛型Generics泛型基础知识泛型:是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。泛型的格式:<数据类型>注意:泛型只能支持引用数据类型。如果我们没有给集合指定类型,默认认为所有的数据类型都是Object类型,此时可以往集合中添加任意的数据类型。带来一个坏处是由于......
  • Java登陆第十三天——网络编程(三)DatagramSocket
    DatagramSocket使用DatagramSocket(数据套接字)可以进行UDP程序的开发,此类可以建立单向地、不可靠地、快速地通信。在UDP编程中,混淆了服务端和客户端的概念。因为通信是单向的,所以身份可以随时切换。(也有人把TCP称作服务端客户端,UDP称作发送端和接收端)DatagramSocket类常用......