import j**a.util.concurrent.locks.locksupport;/** 三種執行緒協作通訊的方式:suspend/resume、wait/notify、park/unpark */
public class demo6
system.out.println("2、買到包子,回家");
});consumerthread.start();
// 3秒之後,生產乙個包子
thread.sleep(3000l);
baozidian = new object();
consumerthread.resume();
system.out.println("3、通知消費者");
}/** 死鎖的suspend/resume。 suspend並不會像wait一樣釋放鎖,故此容易寫出死鎖** */
public void suspendresumedeadlocktest() throws exception
}system.out.println("2、買到包子,回家");
});consumerthread.start();
// 3秒之後,生產乙個包子
thread.sleep(3000l);
baozidian = new object();
// 爭取到鎖以後,再恢復consumerthread
synchronized (this)
system.out.println("3、通知消費者");
}/** 導致程式永久掛起的suspend/resume */
public void suspendresumedeadlocktest2() throws exception catch (interruptedexception e)
// 這裡的掛起執行在resume後面
thread.currentthread().suspend();
}system.out.println("2、買到包子,回家");
});consumerthread.start();
// 3秒之後,生產乙個包子
thread.sleep(3000l);
baozidian = new object();
consumerthread.resume();
system.out.println("3、通知消費者");
consumerthread.join();
}/** 正常的wait/notify */
public void waitnotifytest() throws exception catch (interruptedexception e) }}
system.out.println("2、買到包子,回家");
}).start();
// 3秒之後,生產乙個包子
thread.sleep(3000l);
baozidian = new object();
synchronized (this)
}/** 會導致程式永久等待的wait/notify */
public void waitnotifydeadlocktest() throws exception catch (interruptedexception e1)
synchronized (this) catch (interruptedexception e) }}
system.out.println("2、買到包子,回家");
}).start();
// 3秒之後,生產乙個包子
thread.sleep(3000l);
baozidian = new object();
synchronized (this)
}/** 正常的park/unpark */
public void parkunparktest() throws exception
system.out.println("2、買到包子,回家");
});consumerthread.start();
// 3秒之後,生產乙個包子
thread.sleep(3000l);
baozidian = new object();
locksupport.unpark(consumerthread);
system.out.println("3、通知消費者");
}/** 死鎖的park/unpark */
public void parkunparkdeadlocktest() throws exception
}system.out.println("2、買到包子,回家");
});consumerthread.start();
// 3秒之後,生產乙個包子
thread.sleep(3000l);
baozidian = new object();
// 爭取到鎖以後,再恢復consumerthread
synchronized (this)
system.out.println("3、通知消費者");
}public static void main(string args) throws exception
}
執行緒通訊的幾種方式
public class maincatch interruptedexception ex t1 thread t2 new thread new runnable catch interruptedexception ex t2 t1.start t2.start public class re...
java 執行緒間通訊的幾種方式
1.如何讓兩個執行緒依次執行 假設有兩個執行緒,乙個執行緒a,乙個執行緒b,兩個執行緒分別依次列印 1 3 三個數字即可。package test author administrator createdate 2017 10 10 public class demo1 thread thread2...
通訊的幾種方式介紹
寫此文的目的是為了更一步加深對現代網路通訊技術的認識,勉勵和提醒自己緊跟時代的技術潮流,從使用物件上來劃分通訊方式,我把它分為企業通訊和大眾通訊,首先介紹企業通訊的幾種方式 一 企業通訊 1 語音通訊 a 模擬中繼 使用者使用交換機管理分機,使用者交換機通過多根音訊電纜與局端裝置互聯,所有分機共享這...