1. 程式人生 > >java線程間通信1--簡單實例

java線程間通信1--簡單實例

.com getname com spa http 主線程 strong art 子線程

線程通信

  一、線程間通信的條件

    1、兩個以上的線程訪問同一塊內存

     2、線程同步,關鍵字 synchronized

  二、線程間通信主要涉及的方法

    wait();    ----> 用於阻塞進程

    notify();   ----> 用於喚醒進程

    notifyAll(); ----> 用於喚醒所有進程

  三、線程通信的圖解

    技術分享圖片

  四、線程通信的實例代碼

      

 1 //主線程
 2 public class ThreadMain {
 3     
 4     public static void main(String[] args) throws
InterruptedException { 5 Buffer buffer = new Buffer(); 6 7 Thread_one thread_one = new Thread_one(buffer); 8 thread_one.start(); //啟動子線程 9 10 Thread.sleep(1000); //主線程睡眠1秒 11 12 String name = Thread.currentThread().getName();
13 System.out.println(name); 14 buffer.doNotify(); //喚醒子線程 15 } 16 }

 1 //要訪問的內存區
 2 public class Buffer {
 3     
 4     //進行包裝
 5     public synchronized void doWait() {
 6         try {
 7             wait();
 8         } catch (InterruptedException e) {
 9             // TODO Auto-generated catch block
10 e.printStackTrace(); 11 } 12 } 13 public synchronized void doNotify() { 14 notify(); 15 } 16 }

 1 //子線程
 2 public class Thread_one extends Thread{
 3     private Buffer buffer;
 4     public Thread_one(Buffer buffer) {
 5         this.buffer = buffer;
 6     }
 7     @Override
 8     public void run() {
 9         //子線程睡眠
10         buffer.doWait();
11         //具體操作,顯示當前線程名
12         String name = Thread_one.currentThread().getName();
13         System.out.println(name);
14     }
15 }

java線程間通信1--簡單實例