2021
05-02
05-02
浅谈JAVA 线程状态中可能存在的一些误区
BLOCKED和WAITING的区别BLOCKED和WAITING两种状态从结果上来看,都是线程暂停,不会占用CPU资源,不过还是有一些区别的BLOCKED等待Monitor锁的阻塞线程的线程状态,处于阻塞状态的线程正在等待Monitor锁进入synchronized Block或者Method,或者在调用Object.wait后重新进入同步块/方法。简单的说,就是线程等待synchronized形式的锁时的状态下面这段代码中,t1在等待t0的锁释放(synchronized...
继续阅读 >
线程状态NEW:刚创建未启动的线程RUNNABLE:正在执行状态BLOCKED:处于阻塞状态的线程WAITING:正在等待另一个线程执行特定动作的线程TIMED_WAITING:等待另一个线程执行时间到达指定时间TERMINATED:线程退出执行publicclassTestState{publicstaticvoidmain(String[]args){Threadthread=newThread(()->{for(inti=0;i<5;i++){try{Thread.sleep(1000);}catch(...
1.概念线程一共有6中状态,相互之间可以互相转换。等待唤醒案例(线程之间的通信)实现:等待唤醒案例:线程之间的通信创建一个顾客线程(消费者):告知老板要的包子的种类和数量,调用wait方法,放弃cpu的执行,进入到WAITING状态(无限等待)创建一个老板线程(生产者):花了5秒做包子,做好包子之后,调用notify方法,唤醒顾客吃包子注意:顾客和老板线程必须使用同步代码块包裹起来,保证等待和唤醒只能有一个在执行同步使用的锁对象必须保证唯...