程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java多線程-Condition,多線程-condition

java多線程-Condition,多線程-condition

編輯:JAVA綜合教程

java多線程-Condition,多線程-condition


ConditionObject 監視器方法(waitnotifynotifyAll)分解成截然不同的對象,以便通過將這些對象與任意 Lock 實現組合使用,為每個對象提供多個等待 set(wait-set)。其中,Lock 替代了 synchronized 方法和語句的使用,Condition 替代了 Object 監視器方法的使用。

先看一個關於Condition使用的簡單實例:

 1 public class ConditionTest {
 2     public static void main(String[] args) {
 3         final Lock lock = new ReentrantLock();
 4         final Condition condition = lock.newCondition();
 5         
 6         Thread thread1 = new Thread(new Runnable() {
 7             @Override
 8             public void run() {
 9                 try {
10                     lock.lock();
11                     System.out.println("我需要等一個信號"+this);
12                     condition.await();
13                     System.out.println("我拿到一個信號"+this);
14                 } catch (Exception e) {
15                     // TODO: handle exception
16                 } finally{
17                     lock.unlock();
18                 }
19                 
20                 
21             }
22         }, "thread1");
23         thread1.start();
24         Thread thread2 = new Thread(new Runnable() {
25             @Override
26             public void run() {
27                 try {
28                     lock.lock();
29                     System.out.println("我拿到了鎖");
30                     Thread.sleep(500);
31                     System.out.println("我發出一個信號");
32                     condition.signal();
33                 } catch (Exception e) {
34                     // TODO: handle exception
35                 } finally{
36                     lock.unlock();
37                 }
38                 
39                 
40             }
41         }, "thread2");
42         thread2.start();
43     }
44 }

運行結果:

1 我需要等一個信號com.luchao.traditionalthread.ConditionTest$1@10bc3c9 2 我拿到了鎖 3 我發出一個信號 4 我拿到一個信號com.luchao.traditionalthread.ConditionTest$1@10bc3c9 View Code
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved