多线程入门02 —— 线程的状态
发布日期:2022-04-11 08:52:52 浏览次数:11 分类:博客文章

本文共 1226 字,大约阅读时间需要 4 分钟。

1.线程的五大状态

2.线程状态的变化过程

3. 相关方法

方法 说明
setPriority(int newPriority) 设置线程的优先级
static void sleep(long milllis) 线程休眠指定的时间(以毫秒为单位)
void join() 等待该线程终止
static void yield() 礼让他人
void interrupt() 强制中断线程(不推荐使用)
boolean isAlive() 测试线程是否处于活动状态
  • 线程休眠(Sleep)
    • 将线程阻塞制定时间(毫秒)
    • 存在InterruptedException
    • 时间之后,线程进入就绪状态
    • 可用于模拟网络延迟,倒计时等,也可用于放大错误
    • 每个对象都一个锁,sleep不会释放锁
  • 线程礼让(Yield)
    • 让当前正在执行的线程暂停,但不阻塞
    • 将线程从运行状态转换为就绪状态
    • 让CPU重新调度,礼让不一定能成功,全看CPU心情如何
  • 强制执行(Join)
    • 合并线程,待此线程执行完成后,在执行其他线程,其他线程会被阻塞
    • 相当于插队

4.关于停止线程

  • 不推荐使用JDK提供的stop()、destroy()方法 (已过时,且不安全,详见https://www.jianshu.com/p/7686ac6b84f1)

  • 推荐让线程自己停止

    • 利用一个标志位,当标志位处于某种特定状态时,终止线程运行

    • 示例

    • package com.pbx.lesson01;/** * @author BruceXu * @date 2020/9/13 */public class ThreadStop implements Runnable {    private boolean flag = true;    public static void main(String[] args) {        ThreadStop myThread = new ThreadStop();        new Thread(myThread).start();        try {            Thread.sleep(5);        } catch (InterruptedException e) {            e.printStackTrace();        }        myThread.stop();    }    @Override    public void run() {        while (flag) {            System.out.println("线程正在运行中");        }        System.out.println("线程马上退出");    }    public void stop() {        this.flag = false;    }}

转载地址:https://www.cnblogs.com/primabrucexu/p/13694058.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:多线程入门03 —— 浅谈线程同步问题
下一篇:多线程入门01 —— 新线程创建方法

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月02日 11时46分14秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

中文医疗领域自然语言处理相关数据集、经典论文资源蒸馏分享 2019-04-27
2020年新-《机器学习算法入门》 2019-04-27
历史最全语音增强必读论文、数据集、工具包、书籍及应用整理分享 2019-04-27
机器学习基础教材-《统计学习与数据分析介绍》 2019-04-27
DL语音分离|抽取必读论文、数据集、代码工具整理分享 2019-04-27
机器学习百页书作者20年新作-机器学习工程实战 2019-04-27
MLSS 2020-Bengio-《机器学习暑期研究前沿学校》 2019-04-27
20年经典-《海量数据挖掘技术》 2019-04-27
互联网数据驱动力-《数据推动力-创造数据文化》 2019-04-27
搜索推荐-《搜素与推荐中的深度学习匹配(Deep Match)技术》 2019-04-27
强化学习/机器人学经典-策略规划算法原理 2019-04-27
2020最新互联网算法岗必读-算法设计与分析基础 2019-04-27
程序员必读-统计思考-程序员必备概率和统计知识 2019-04-27
<模型汇总-7>基于CNN的Seq2Seq模型-Convolutional Sequence to Sequence Learning 2019-04-27
<纯干货-2>GAN视频教程part5-DCGAN实战及所有数据 2019-04-27
<深度学习-实战2>Convolutional_Seq2Seq的环境搭建及训练 2019-04-27
<视频教程-2>生成对抗网络GAN视频教程part6-完整版 2019-04-27
<模型汇总_9> 深度学习网络的表达方式汇总及模型分类方法 2019-04-27
<深度学习优化策略-3> 深度学习网络加速器Weight Normalization_WN 2019-04-27
深度学习的发展历史及应用现状 2019-04-27