Java 线程的几种状态

Java 线程的几种状态,第1张

线程有四种状态 任何一个线程肯定处于这四种状态中的一种 ) 产生(New) 线程对象已经产生 但尚未被启动 所以无法执行 如通过new产生了一个线程对象后没对它调用start()函数之前 ) 可执行(Runnable) 每个支持多线程的系统都有一个排程器 排程器会从线程池中选择一个线程并启动它 当一个线程处于可执行状态时 表示它可能正处于线程池中等待排排程器启动它 也可能它已正在执行 如执行了一个线程对象的start()方法后 线程就处于可执行状态 但显而易见的是此时线程不一定正在执行中 ) 死亡(Dead) 当一个线程正常结束 它便处于死亡状态 如一个线程的run()函数执行完毕后线程就进入死亡状态 ) 停滞(Blocked) 当一个线程处于停滞状态时 系统排程器就会忽略它 不对它进行排程 当处于停滞状态的线程重新回到可执行状态时 它有可能重新执行 如通过对一个线程调用wait()函数后 线程就进入停滞状态 只有当两次对该线程调用notify或notifyAll后它才能两次回到可执行状态 class Object下常用的线程函数wait() notify()和notifyAll()这三个函数由java lang Object类提供 用于协调多个线程对共享数据的存取 ) wait()函数有两种形式 第一种形式接受一个毫秒值 用于在指定时间长度内暂停线程 使线程进入停滞状态 第二种形式为不带参数 代表waite()在notify()或notifyAll()之前会持续停滞 ) 当对一个对象执行notify()时 会从线程等待池中移走该任意一个线程 并把它放到锁标志等待池中 当对一个对象执行notifyAll()时 会从线程等待池中移走所有该对象的所有线程 并把它们放到锁标志等待池中 ) 当调用wait()后 线程会释放掉它所占有的 锁标志 从而使线程所在对象中的其它synchronized数据可被别的线程使用 例 下面 我们将对例 中的例子进行修改class TestThreadMethod extends Thread{public static int shareVar = public TestThreadMethod(String name){super(name) }public synchronized void run(){if(shareVar== ){for(int i= i<i++){shareVar++if(shareVar== ){try{this wait() //( )}catch(InterruptedException e){}}}}if(shareVar!= ){System out print(Thread currentThread() getName()) System out println( shareVar = + shareVar) this notify() //( )}}}public class TestThread{public static void main(String[] args){TestThreadMethod t = new TestThreadMethod( t ) TestThreadMethod t = new TestThreadMethod( t ) t start() //( )//t start() ( )t start() //( )}}运行结果为 t shareVar = 因为t 和t 是两个不同对象 所以线程t 调用代码( )不能唤起线程t 如果去掉代码( )的注释 并注释掉代码( ) 结果为 t shareVar = t shareVar = 这是因为 当代码( )的线程执行到代码( )时 它进入停滞状态 并释放对象的锁状态 接着 代码( )的线程执行run() 由于此时 shareVar值为 所以执行打印语句并调用代码( )使代码( )的线程进入可执行状态 然后代码( )的线程结束 当代码( )的线程重新执行后 它接着执行for()循环一直到shareVar= 然后打印shareVar lishixinzhi/Article/program/Java/gj/201311/27510

new: 创建线程,但没有纳入线程调度中

Runnable: 调用线程的start方法后,纳入线程调度,等待cpu分配时间片段

Running:获得cpu时间片段,执行run()方法中的逻辑

Blocked: 阻塞状态,在Running的过程中可能出现阻塞但阻塞解除不会回到Running,而是回到Runnable

Dead:任务完成,或运行出现异常没捕获,等待GC回收


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11634192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存