日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

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

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

因為都個對像都有鎖,鎖是每個對像的基礎,當然操作鎖的方法也是最基礎了.

先看java doc線程怎么說:

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

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

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

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

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("我生產了"+(++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線程的相關介紹。希望大家有所收獲。


網站標題:javadoc線程關鍵代碼的編寫教程
網站網址:http://m.5511xx.com/article/dpgdosg.html