美文网首页
[小练习] 理解Thread状态

[小练习] 理解Thread状态

作者: 大写K | 来源:发表于2019-10-24 11:21 被阅读0次
    class ThreadState implements Runnable {
         public synchronized void waitForAMoment() throws InterruptedException {
             wait(500); // wait不会持有锁
         }
         
         public synchronized void waitForever() throws InterruptedException {
             wait(); // 当前线程永久等待,只能等到其他线程调用notify()或notifyAll()方法才能唤醒
         }
         
         public synchronized void nofifyNow() throws InterruptedException {
             notify();
         }
         @Override
         public void run() {
             try {
                 this.waitForAMoment();
                 this.waitForever();    
                 System.out.println("other***" + Thread.currentThread().getState()); // other***RUNNABLE
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         }
    }
    public class Test {
         public static void main(String[] args) throws InterruptedException {
             ThreadState ts = new ThreadState();
             Thread thread = new Thread(ts);
             System.out.println("创建新线程:" + thread.getState()); // 创建新线程:NEW
             thread.start();
             System.out.println("启动线程:" + thread.getState()); // 启动线程:RUNNABLE
             Thread.sleep(100);
             System.out.println("等待500ms:" + thread.getState()); // 等待500ms:TIMED_WAITING
             Thread.sleep(1000); 
             System.out.println("一直等待:" + thread.getState()); // 一直等待:WAITING
             ts.nofifyNow();
             System.out.println("唤醒进程:" + thread.getState()); // 唤醒进程:BLOCKED
             Thread.sleep(1000); // 新进程被唤醒后,继续向下执行System.out.println("other***" + Thread.currentThread().getState()),此时新线程转为Runnable状态
             System.out.println("main***" + Thread.currentThread().getState()); // main***RUNNABLE
             System.out.println("进程完结:" + thread.getState()); // 进程完结:TERMINATED
         }
    }
    

    相关文章

      网友评论

          本文标题:[小练习] 理解Thread状态

          本文链接:https://www.haomeiwen.com/subject/ieyrvctx.html