详解Java中的线程让步yield()与线程休眠sleep()方法

我们来详细讲解一下Java中线程让步(yield())和线程休眠(sleep())方法的用法和区别。

一、线程让步(yield())

线程让步是指让出当前线程对CPU的占用权,使得其他等待执行的线程有机会运行。Java中提供了线程让步的方法yield()。

其语法格式如下:

public static void yield()

实例:

下面是一个简单的示例,包含了两个线程,一个循环打印字母A,另一个循环打印字母B。通过yield()方法,让两个线程轮流执行,提高了程序的执行效率:

public class ThreadYieldDemo {
    public static void main(String[] args) {
        Thread t1=new Thread(new MyThreadA(),"A");
        Thread t2=new Thread(new MyThreadB(),"B");
        t1.start();
        t2.start();
    }
}
class MyThreadA implements Runnable {
    public void run() {
        for(int i=0;;i++) {
            System.out.print(Thread.currentThread().getName()+"-"+(char)(i+'A')+" ");
            Thread.yield();
        }
    }
}
class MyThreadB implements Runnable {
    public void run() {
        for(int i=0;;i++) {
            System.out.print(Thread.currentThread().getName()+"-"+(char)(i+'a')+" ");
            Thread.yield();     
        }
    }
}

二、线程休眠(sleep())

线程休眠是指让当前线程暂停执行指定的时间,让其他等待执行的线程有机会运行。Java中提供了线程休眠的方法sleep()。

其语法格式如下:

public static void sleep(long millis)throws InterruptedException

示例:

下面是一个基本的示例,包含了两个线程,一个循环打印数字1~5,每打印完一个数字就休眠1秒钟;另一个循环打印字母A~E,每打印完一个字母就休眠2秒钟:

public class ThreadSleepDemo {
    public static void main(String[] args) {    
        Thread t1=new Thread(new MyThreadA1(),"A");
        Thread t2=new Thread(new MyThreadB1(),"B");
        t1.start();
        t2.start();
    }
}
class MyThreadA1 implements Runnable {
    public void run() {
        for(int i=1;i<=5;i++) {
            System.out.print(Thread.currentThread().getName()+":"+i+" ");
            try {
                Thread.sleep(1000);     // 线程休眠1秒
            } catch(InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
class MyThreadB1 implements Runnable {
    public void run() {
        for(int i=1;i<=5;i++) {
            System.out.print(Thread.currentThread().getName()+":"+(char)(i+'A'-'1')+" ");
            try {
                Thread.sleep(2000);     // 线程休眠2秒
            } catch(InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

以上就是详解Java中的线程让步yield()与线程休眠sleep()方法的完整攻略,希望能对您的学习有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java中的线程让步yield()与线程休眠sleep()方法 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java读写文件,在文件中搜索内容,并输出含有该内容的所有行方式

    下面是“Java读写文件,在文件中搜索内容,并输出含有该内容的所有行方式”的完整攻略: 读取文件 Java提供了多种读取文件的方式,其中比较常用的是使用FileInputStream或者BufferedReader类进行文件读取。下面是使用BufferedReader读取文件的示例代码: try (BufferedReader reader = new Bu…

    Java 2023年5月26日
    00
  • Java 通过mave命令下载jar包的示例代码

    当需要使用 Maven 管理 Java 项目的依赖时,通常需要通过 Maven 命令下载 jar 包文件。下面是操作步骤: 安装 Maven 首先需要安装 Maven 工具。这里假设您已经安装了 Maven。 步骤一:创建项目 首先创建一个基于 Maven 的 Java 项目。可以使用 Eclipse 或 Intellij IDEA 等集成开发环境创建。 步…

    Java 2023年5月20日
    00
  • java实现打砖块游戏算法

    下面是详细讲解“Java实现打砖块游戏算法”的完整攻略: 1. 游戏规则 在开始讲解算法之前,首先需要了解砖块游戏的规则: 游戏区域由一个矩形网格构成,其中有一些砖块。 游戏中有一个挡板,玩家可以通过控制挡板来阻挡弹球。 玩家需要控制弹球击中砖块,摧毁所有砖块才能过关。 弹球碰到挡板或者砖块边缘会反弹。 2. 实现思路 要想实现砖块游戏算法,需要先了解以下几…

    Java 2023年5月19日
    00
  • java获取当前时间和前一天日期(实现代码)

    获取当前时间和前一天日期是Java中常见的操作,下面我为大家介绍具体的实现方法和代码。 获取当前时间 Java中获取当前时间的方法有很多,这里介绍最常见的两种方法: 方法一:使用系统时间获取 我们可以使用java.util.Date类的getTime()方法获取当前时间的毫秒数,然后使用java.sql.Timestamp类将毫秒数转换成时间格式。 impo…

    Java 2023年5月20日
    00
  • js实现登录与注册界面

    下面是“js实现登录与注册界面”的完整攻略: 界面设计 首先,我们需要设计一个简单美观的登录与注册界面,可以使用HTML、CSS和Bootstrap等工具来实现。其中,我们需要添加以下元素: 注册表单:包含用户输入用户名、密码、确认密码等信息的表单; 登录表单:包含用户输入用户名、密码等信息的表单; 注册和登录按钮:用于提交注册和登录表单; 反馈信息:用于提…

    Java 2023年6月15日
    00
  • Java ArrayList实现班级信息管理系统

    下面我来详细讲解一下“Java ArrayList实现班级信息管理系统”的完整攻略,包括以下内容: 1. 环境准备 首先需要安装Java开发环境,建议使用JDK 8或更高版本。可以到Oracle官网下载安装。 2. 创建班级类 创建一个班级类,可以定义班级名称、班主任姓名、学生列表等属性和方法。一个简单的班级类的示例代码如下: public class Cl…

    Java 2023年5月24日
    00
  • Kotlin 标准函数和静态方法示例详解

    这是一篇关于 Kotlin 标准函数和静态方法的详细攻略,本文将会介绍 Kotlin 标准函数和静态方法的相关概念、使用方法以及示例说明。包含以下几个部分: Kotlin 标准函数和静态方法的概念介绍 Kotlin 标准函数示例说明 Kotlin 静态方法示例说明 Kotlin 标准函数和静态方法的概念介绍 Kotlin 标准函数的概念 Kotlin 标准函…

    Java 2023年5月26日
    00
  • Java Springboot之Spring家族的技术体系

    Java Springboot之Spring家族的技术体系 什么是Spring家族 Spring家族是一个庞大的Java生态圈,以Spring Framework为核心,囊括了Spring Boot、Spring Cloud、Spring Data、Spring Security等许多重要的技术板块。Spring家族以轻量级的理念为基础,提供了丰富的技术和工…

    Java 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部