日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
javadoc線程關(guān)鍵代碼的編寫教程

java doc線程在使用的時候需要我們不斷學(xué)習(xí)相關(guān)問題,下面我們就詳細(xì)的看看如何才能更好使用相關(guān)代碼。wait(),notify(),notifyAll()不屬于Thread類,而是屬于Object基礎(chǔ)類,也就是說每個對像都有wait(),notify(),notifyAll()的功能。

成都創(chuàng)新互聯(lián)業(yè)務(wù)包括:成品網(wǎng)站、企業(yè)產(chǎn)品展示型網(wǎng)站建設(shè)、高端網(wǎng)站設(shè)計、電子商務(wù)型網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)(多語言)、商城開發(fā)、按需求定制網(wǎng)站、全網(wǎng)營銷推廣等。效率優(yōu)先,品質(zhì)保證,用心服務(wù)是我們的核心價值觀,我們將繼續(xù)以良好的信譽(yù)為基礎(chǔ),秉承穩(wěn)固與發(fā)展、求實(shí)與創(chuàng)新的精神,為客戶提供更全面、更優(yōu)質(zhì)的互聯(lián)網(wǎng)服務(wù)!

因?yàn)槎紓€對像都有鎖,鎖是每個對像的基礎(chǔ),當(dāng)然操作鎖的方法也是最基礎(chǔ)了.

先看java doc線程怎么說:

wait導(dǎo)致當(dāng)前的線程等待,直到其他線程調(diào)用此對象的 notify() 方法或 notifyAll() 方法。當(dāng)前的線程必須擁有此對象監(jiān)視器。該線程發(fā)布對此監(jiān)視器的所有權(quán)并等待,直到其他線程通過調(diào)用 notify 方法,或 notifyAll 方法通知在此對象的監(jiān)視器上等待的線程醒來。然后該線程將等到重新獲得對監(jiān)視器的所有權(quán)后才能繼續(xù)執(zhí)行. #t#

notify喚醒在此對象監(jiān)視器上等待的單個線程。如果所有線程都在此對象上等待,則會選擇喚醒其中一個線程。直到當(dāng)前的線程放棄此對象上的鎖定,才能繼續(xù)執(zhí)行被喚醒的線程。此方法只應(yīng)由作為此對象監(jiān)視器的所有者的線程來調(diào)用.

"當(dāng)前的線程必須擁有此對象監(jiān)視器"與"此方法只應(yīng)由作為此對象監(jiān)視器的所有者的線程來調(diào)用"說明wait方法與notify方法必須在同步塊內(nèi)執(zhí)行,即synchronized(obj之內(nèi)).

調(diào)用對像wait方法后,當(dāng)前線程釋放對像鎖,進(jìn)入等待狀態(tài).直到其他線程(也只能是其他線程)通過notify 方法,或 notifyAll.該線程重新獲得對像鎖.繼續(xù)執(zhí)行,記得線程必須重新獲得對像鎖才能繼續(xù)執(zhí)行.因?yàn)閟ynchronized代碼塊內(nèi)沒有鎖是寸步不能走的.看一個很經(jīng)典的例子:

Java代碼

 
 
 
  1. package ProductAndConsume; 
  2. import java.util.List; 
  3. public class Consume implements Runnable{ 
  4. private List container = null; 
  5. private int count; 
  6. public Consume(List lst){ 
  7. this.container = lst; 
  8. public void run() { 
  9. while(true){ 
  10. synchronized (container) { 
  11. if(container.size()== 0){ 
  12. try { 
  13. container.wait();//放棄鎖 
  14. } catch (InterruptedException e) { 
  15. e.printStackTrace(); 
  16. try { 
  17. Thread.sleep(100); 
  18. } catch (InterruptedException e) { 
  19. // TODO Auto-generated catch block 
  20. e.printStackTrace(); 
  21. container.remove(0); 
  22. container.notify(); 
  23. System.out.println("我吃了"+(++count)+"個"); 
  24. package ProductAndConsume; 
  25. import java.util.List; 
  26. public class Product implements Runnable { 
  27. private List container = null; 
  28. private int count; 
  29. public Product(List lst) { 
  30. this.container = lst; 
  31. public void run() { 
  32. while (true) { 
  33. synchronized (container) { 
  34. if (container.size() > MultiThread.MAX) { 
  35. try { 
  36. container.wait(); 
  37. } catch (InterruptedException e) { 
  38. e.printStackTrace(); 
  39. try { 
  40. Thread.sleep(100); 
  41. } catch (InterruptedException e) { 
  42. e.printStackTrace(); 
  43. container.add(new Object()); 
  44. container.notify(); 
  45. System.out.println("我生產(chǎn)了"+(++count)+"個"); 
  46. package ProductAndConsume; 
  47. import java.util.ArrayList; 
  48. import java.util.List; 
  49. public class MultiThread { 
  50. private List container = new ArrayList(); 
  51. public final static int MAX = 5; 
  52. public static void main(String args[]){ 
  53. MultiThread m = new MultiThread(); 
  54. new Thread(new Consume(m.getContainer())).start(); 
  55. new Thread(new Product(m.getContainer())).start(); 
  56. new Thread(new Consume(m.getContainer())).start(); 
  57. new Thread(new Product(m.getContainer())).start(); 
  58. public List getContainer() { 
  59. return container; 
  60. public void setContainer(List container) { 
  61. this.container = container; 

以上就是對java doc線程的相關(guān)介紹。希望大家有所收獲。


當(dāng)前名稱:javadoc線程關(guān)鍵代碼的編寫教程
網(wǎng)站網(wǎng)址:http://www.dlmjj.cn/article/dpgdosg.html