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

   }

}


相关文章
|
2月前
|
Java API Maven
如何使用Java开发抖音API接口?
在数字化时代,社交媒体平台如抖音成为生活的重要部分。本文详细介绍了如何用Java开发抖音API接口,从创建开发者账号、申请API权限、准备开发环境,到编写代码、测试运行及注意事项,全面覆盖了整个开发流程。
347 10
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
108 2
|
10天前
|
JSON Java 数据挖掘
利用 Java 代码获取淘宝关键字 API 接口
在数字化商业时代,精准把握市场动态与消费者需求是企业成功的关键。淘宝作为中国最大的电商平台之一,其海量数据中蕴含丰富的商业洞察。本文介绍如何通过Java代码高效、合规地获取淘宝关键字API接口数据,帮助商家优化产品布局、制定营销策略。主要内容包括: 1. **淘宝关键字API的价值**:洞察用户需求、优化产品标题与详情、制定营销策略。 2. **获取API接口的步骤**:注册账号、申请权限、搭建Java开发环境、编写调用代码、解析响应数据。 3. **注意事项**:遵守法律法规与平台规则,处理API调用限制。 通过这些步骤,商家可以在激烈的市场竞争中脱颖而出。
|
27天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
1月前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
87 10
|
1月前
|
存储 Java 数据挖掘
Java 8 新特性之 Stream API:函数式编程风格的数据处理范式
Java 8 引入的 Stream API 提供了一种新的数据处理方式,支持函数式编程风格,能够高效、简洁地处理集合数据,实现过滤、映射、聚合等操作。
79 6
|
1月前
|
Java API 开发者
Java中的Lambda表达式与Stream API的协同作用
在本文中,我们将探讨Java 8引入的Lambda表达式和Stream API如何改变我们处理集合和数组的方式。Lambda表达式提供了一种简洁的方法来表达代码块,而Stream API则允许我们对数据流进行高级操作,如过滤、映射和归约。通过结合使用这两种技术,我们可以以声明式的方式编写更简洁、更易于理解和维护的代码。本文将介绍Lambda表达式和Stream API的基本概念,并通过示例展示它们在实际项目中的应用。
|
2月前
|
安全 Java API
告别SimpleDateFormat:Java 8日期时间API的最佳实践
在Java开发中,处理日期和时间是一个基本而重要的任务。传统的`SimpleDateFormat`类因其简单易用而被广泛采用,但它存在一些潜在的问题,尤其是在多线程环境下。本文将探讨`SimpleDateFormat`的局限性,并介绍Java 8引入的新的日期时间API,以及如何使用这些新工具来避免潜在的风险。
46 5
|
2月前
|
开发框架 Java 关系型数据库
Java哪个框架适合开发API接口?
在快速发展的软件开发领域,API接口连接了不同的系统和服务。Java作为成熟的编程语言,其生态系统中出现了许多API开发框架。Magic-API因其独特优势和强大功能,成为Java开发者优选的API开发框架。本文将从核心优势、实际应用价值及未来展望等方面,深入探讨Magic-API为何值得选择。
89 2
|
2月前
|
缓存 监控 Java
如何运用JAVA开发API接口?
本文详细介绍了如何使用Java开发API接口,涵盖创建、实现、测试和部署接口的关键步骤。同时,讨论了接口的安全性设计和设计原则,帮助开发者构建高效、安全、易于维护的API接口。
246 4