Java常用API-Runtime

简介: Java常用API-Runtime

3 Runtime

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命令

代码示例:

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");

   }

}

3.3 恶搞好基友

需求:

界面上方按钮默认隐藏

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

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

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

恶搞好基友

public class Test {

   public static void main(String[] args) {

       new MyJframe();

   }

}

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);

   }

}


相关文章
|
15天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
45 2
|
22天前
|
缓存 监控 Java
如何运用JAVA开发API接口?
本文详细介绍了如何使用Java开发API接口,涵盖创建、实现、测试和部署接口的关键步骤。同时,讨论了接口的安全性设计和设计原则,帮助开发者构建高效、安全、易于维护的API接口。
53 4
|
1月前
|
Java API 数据处理
探索Java中的Lambda表达式与Stream API
【10月更文挑战第22天】 在Java编程中,Lambda表达式和Stream API是两个强大的功能,它们极大地简化了代码的编写和提高了开发效率。本文将深入探讨这两个概念的基本用法、优势以及在实际项目中的应用案例,帮助读者更好地理解和运用这些现代Java特性。
|
2月前
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
|
2月前
|
存储 Java API
如何使用 Java 中的 API 更改 PDF 纸张大小
如何使用 Java 中的 API 更改 PDF 纸张大小
50 11
|
2月前
|
机器学习/深度学习 算法 Java
通过 Java Vector API 利用 SIMD 的强大功能
通过 Java Vector API 利用 SIMD 的强大功能
47 10
|
2月前
|
分布式计算 Java 大数据
大数据-147 Apache Kudu 常用 Java API 增删改查
大数据-147 Apache Kudu 常用 Java API 增删改查
33 1
|
3月前
|
Java API C++
Java 8 Stream Api 中的 peek 操作
本文介绍了Java中`Stream`的`peek`操作,该操作通过`Consumer<T>`函数消费流中的每个元素,但不改变元素类型。文章详细解释了`Consumer<T>`接口及其使用场景,并通过示例代码展示了`peek`操作的应用。此外,还对比了`peek`与`map`的区别,帮助读者更好地理解这两种操作的不同用途。作者为码农小胖哥,原文发布于稀土掘金。
123 9
Java 8 Stream Api 中的 peek 操作
|
3月前
|
Java 程序员 API
Java 8新特性之Lambda表达式与Stream API的探索
【9月更文挑战第24天】本文将深入浅出地介绍Java 8中的重要新特性——Lambda表达式和Stream API,通过实例解析其语法、用法及背后的设计哲学。我们将一探究竟,看看这些新特性如何让Java代码变得更加简洁、易读且富有表现力,同时提升程序的性能和开发效率。
|
2月前
|
SQL Java API
深入探索Java的持久化技术——JPA(Java Persistence API)
【10月更文挑战第10天】深入探索Java的持久化技术——JPA(Java Persistence API)
44 0