自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java多線程如何防止主線的阻塞

開發(fā) 后端
Java多線程在防止主線的阻塞上有著自己的高招,在不斷的學(xué)習(xí)中我們會(huì)發(fā)現(xiàn)很多問題都能追述到源代碼中。下面我們就詳細(xì)的看看如何解決問題。

Java多線程在我們盡情的使用中存在著很多的問題,首先就是如何解決主線的阻塞問題。看完下面的代碼希望你對此有所啟發(fā)。在不斷的學(xué)習(xí)中才能有更好的技術(shù)突破。Java多線程防止主線阻塞代碼如下:

  1. if(e.getSource()==startItem)  
  2. {//運(yùn)行多線程爬蟲  
  3. stateLabel.setText("運(yùn)行中....");  
  4. try {  
  5. URL url_url=new URL(web_url);  
  6. web_host=url_url.getHost();  
  7. } catch (MalformedURLException e2) {  
  8. e2.printStackTrace();  
  9. }  
  10. if(tpool==null)  
  11. {  
  12. // System.out.println("運(yùn)行");  
  13. new Thread(  
  14. new Runnable(){   
  15. public void run()   
  16. {  
  17. //要在另一個(gè)線程做得事情  
  18. // System.out.println("啦啦啦啦");  
  19. tpool=new ThreadPoolExecutor(minN,maxN,aliveT,  
  20. TimeUnit.SECONDS,  
  21. new LinkedBlockingQueue<Runnable>()/*,  
  22. new ThreadPoolExecutor.CallerRunsPolicy()*/);  
  23. //editor_pane.setText("創(chuàng)建線程池:<br>");  
  24. String tempstr="<hr>" +  
  25. "創(chuàng)建線程池:" +  
  26. "<br>設(shè)置最小線程數(shù)目:"+minN+  
  27. "<br>設(shè)置最大線程數(shù)目:"+maxN+  
  28. "<br>設(shè)置空閑線程存活時(shí)間(秒):"+aliveT+  
  29. "<br>設(shè)置阻塞線程隊(duì)列大小為:"+blockQN+  
  30. "<hr>" +  
  31. "設(shè)置本地映射目錄為:" +  
  32. "<br>"+dir_path+  
  33. "<hr>" +  
  34. "<br>爬取入口網(wǎng)頁為:" +  
  35. "<br>"+web_url+"<hr>";  
  36. setEditorContent(false,tempstr);  
  37. addToUnProQ(web_url);  
  38. String geturl=null;  
  39. getPage gt=null;  
  40. while((!isUnProQEmpty())||!tpool.isTerminated())
    //有沒有處理的連接或者tpool沒有結(jié)束  
  41. {//如果 還有連接沒有被處理  
  42. geturl=delFromUnProQ();  
  43. if(geturl!=null)  
  44. {  
  45. addToProQ(geturl);  
  46. gt=new getPage(geturl);  
  47. tpool.execute(gt);  
  48. }  
  49. try {//等待0.2秒 以便在隊(duì)列中能夠有更多的鏈接  
  50. Thread.sleep((long)(Math.random()*200));  
  51. } catch (InterruptedException e1) {  
  52. e1.printStackTrace();  
  53. }  
  54. }  
  55. tpool.shutdown();  
  56. tpool=null;  
  57. stateLabel.setText("歡迎使用本網(wǎng)站結(jié)構(gòu)分析軟件");  
  58. //setEditorContent(true,shuoming);  
  59. }   
  60. }).start();  
  61. }  
  62. else  
  63. {  
  64. showMessageBox("已經(jīng)開始運(yùn)行了..不要亂按了.
    閑得慌就到www.scjtxx.cn網(wǎng)站看文章去吧..");  
  65. String comd = "explorer http://www.blesslucky.com/";  
  66. try {  
  67. Runtime.getRuntime().exec(comd);  
  68. } catch (IOException e1) {  
  69. e1.printStackTrace();  
  70. }   
  71. }  

以上就是對Java多線程代碼的相關(guān)介紹,希望大家有所收獲。

【編輯推薦】

  1. Fedora 10安裝完成中的Fedora OpenJDK這個(gè)Java套件
  2. Java中間件將成Oracle制勝關(guān)鍵
  3. 獨(dú)家專訪林昊:一步一步了解Java模塊化
  4. Android Java包各種功能概覽
  5. Oracle的Java藍(lán)圖:一個(gè)都不能少
責(zé)任編輯:張浩 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2009-06-30 15:19:00

阻塞讀取遠(yuǎn)程文件Java多線程

2024-01-25 08:40:12

線程雙異步Java8

2010-03-15 17:56:23

Java多線程

2010-03-16 19:08:03

Java線程同步

2018-01-11 08:24:45

服務(wù)器模型詳解

2010-02-02 16:47:12

Python主線程

2010-03-16 18:40:59

Java多線程編程

2011-07-08 16:43:46

iPhone Cocoa 多線程

2011-06-07 17:35:39

iphone 多線程

2009-03-12 10:52:43

Java線程多線程

2023-05-12 14:14:00

Java線程中斷

2010-02-01 17:33:24

Python主線程

2021-09-11 15:26:23

Java多線程線程池

2010-03-15 19:47:30

Java多線程程序

2021-12-26 18:22:30

Java線程多線程

2009-06-29 17:49:47

Java多線程

2010-03-15 16:47:30

Java多線程同步

2010-03-18 09:22:31

Java多線程遞歸

2013-07-15 15:12:40

iOS多線程NSOperationNSOperation

2013-08-21 16:17:09

iPhone多線程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)