【第71题】JAVA高级技术-多线程5(线程插队)

举报
小虚竹 发表于 2022/06/01 00:04:52 2022/06/01
4.9k+ 0 0
【摘要】 回城传送–》《JAVA筑基100例》 文章目录 零、前言一、题目描述二、解题思路三、代码详解四、推荐专栏五、示例源码下载 零、前言 ​ 今天是学习 JAVA语言 打卡的第71天,每天我会提...

回城传送–》《JAVA筑基100例》

零、前言

​ 今天是学习 JAVA语言 打卡的第71天,每天我会提供一篇文章供群成员阅读( 不需要订阅付钱 ),读完文章之后,按解题思路,自己再实现一遍。在小虚竹JAVA社区 中对应的 【打卡贴】打卡,今天的任务就算完成了。

​ 因为大家都在一起学习同一篇文章,所以有什么问题都可以在群里问,群里的小伙伴可以迅速地帮到你,一个人可以走得很快,一群人可以走得很远,有一起学习交流的战友,是多么幸运的事情。

​ 学完后,自己写篇学习报告的博客,可以发布到小虚竹JAVA社区 ,供学弟学妹们参考。

​ 我的学习策略很简单,题海策略+ 费曼学习法。如果能把这100题都认认真真自己实现一遍,那意味着 JAVA语言 已经筑基成功了。后面的进阶学习,可以继续跟着我,一起走向架构师之路。

一、题目描述

题目:在编写多线程的业务时,会遇到让一个线程优先于其他线程运行的情况,除了可以设置线程的优先级高于其他线程,还有更直接的方式:使用Thread类的join()方法。

实现:实现线程插队

二、解题思路

创建一个类:EmergencyThread,实现Runnable接口

在run()方法中,每隔0.1秒输出一条语句。

写一个测试类:JoinThread用来进行测试。

在类中使用EmergencyThread创建并运行新的线程。

使用join()方法让新线程优先于当前线程运行

Thread是程序中的执行线程。JAVA虚拟机允许应用程序并发地运行多个执行线程。

Thread.join():设置了join的线程会优先于其他线程先执行。

注:可以把Thread.join()注释掉,对比下运行结果。

三、代码详解

EmergencyThread

package com.xiaoxuzhu;

/**
 * Description: 
 *
 * @author xiaoxuzhu
 * @version 1.0
 *
 * <pre>
 * 修改记录:
 * 修改后版本	        修改人		修改日期			修改内容
 * 2022/5/14.1	    xiaoxuzhu		2022/5/14		    Create
 * </pre>
 * @date 2022/5/14
 */
public class EmergencyThread implements Runnable {

    @Override
    public void run() {
        for (int i = 1; i < 6; i++) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("紧急情况:" + i + "号车出发!");
        }
    }
}
  
 

JoinThread

public class JoinThread {

    public static void main(String[] args) {
        Thread thread = new Thread(new EmergencyThread());
        thread.start();
        for (int i = 1; i < 6; i++) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("正常情况:" + i + "号车出发!");
            try {
                thread.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

  
 

如图

注释掉代码Thread.join()

如图

四、推荐专栏

《JAVA从零到壹》

《JAVA筑基100例》

五、示例源码下载

关注下面的公众号,回复筑基+题目号

筑基71

文章来源: xiaoxuzhu.blog.csdn.net,作者:小虚竹,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaoxuzhu.blog.csdn.net/article/details/125027128

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。