博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程学习 多线程的五种状态 二
阅读量:4179 次
发布时间:2019-05-26

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


多线程的五种状态


初始状态 ==》 创建线程对象

可运行状态 ==》 调用start方法
运行状态 ==》 os分配cpu时间片
终止状态 ==》 run方法退出
阻塞状态 ==》 1.等待数据输入(1.用户输入2.接收网上数据3.接收文件中数据 等等) 2.sleep方法 3.join方法

在这里插入图片描述

线程的四种状态 ==>五种状态初始状态				线程对象创建好,还没有调用start方法。可运行状态(万事俱备,只欠cpu)               调用start方法  cpu时间片到期由运行状态回到可运行状态运行状态				拿到cpu(时间片),执行代码 (操作系统负责选中一个线程由可运行状态进入运行状态)终止状态				(一般的线程)run方法退出  (主线程是main方法退出)阻塞状态 什么情况下线程会进入阻塞状态   等待数据输入不同的操作系统有不同的线程调度策略,意思是os针对不同的线程有不同的线程运行状态。比如windows系统针对线程的运行状态是随机选中的。进程中所有线程都结束==>进程(程序宣布结束)。join方法  t2线程对t1线程调用join方法  条件不满足t2时,t2阻塞,调用t1。t2对t1调用join,t2阻塞。当t1进行终止状态,t2进入可运行状态。

上代码

public class TestThread {    public static void main(String[] args) {       /* Thread thread = new Thread(); //创建一个线程对象        thread.start(); //对线程对象调用start方法  创建线程(让线程启动)        //os操作系统中创建线程//        thread.stop();  //线程停下来*/        ThreadA threadA = new ThreadA();//        threadA.start();    //调用start方法创建线程//        threadA.run();    //错误//        ThreadB threadB = new ThreadB();        Runnable target=new ThreadB(threadA);        Thread threadB = new Thread(target);        threadA.start();    //调用start方法创建线程        threadB.start();    }}class ThreadA extends Thread{    @Override    public void run() {        for (int i = 0; i <=100 ; i++) {            System.out.println("$$$"+i);//            try {//                Thread.sleep(100);//            } catch (InterruptedException e) {//                e.printStackTrace();//            }        }    }}class ThreadB implements Runnable{    private Thread t;    public ThreadB(Thread t){        this.t=t;    }    @Override    public void run() {        for (int i = 0; i <=100 ; i++) {            System.out.println("###"+i);            try {                if(i==50)                    t.join();                } catch (InterruptedException e) {                    e.printStackTrace();                }            }//            try {//                Thread.sleep(80);//            } catch (InterruptedException e) {//                e.printStackTrace();//            }        }    }

执行结果 当t2执行到50时,执行t1

在这里插入图片描述

这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上! 欢迎加入技术群聊

在这里插入图片描述

转载地址:http://ckoai.baihongyu.com/

你可能感兴趣的文章
程序员励志名言
查看>>
Java SWT事件
查看>>
JavaScript事件
查看>>
Listener监听器
查看>>
kafka学习之路(一)——入门
查看>>
kafka学习之路(二)——提高
查看>>
kafka学习之路(三)——高级
查看>>
kafka自学之路--zookeeper中存储结构
查看>>
storm消息机制
查看>>
storm概述
查看>>
strom架构和构建Topology
查看>>
storm的数据流组
查看>>
storm一致性事务
查看>>
linux学习之硬盘的存储原理和内部架构
查看>>
linux目录结构介绍
查看>>
Linux常用命令大全
查看>>
shell脚本学习之必须了解的基础命令
查看>>
Linux之grep和egrep命令总结
查看>>
linux学习之sed命令总结
查看>>
Linux平台下启动java程序的脚本编写
查看>>