文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页技术开发JAVA Script → Java多线程如何防止主线的阻塞

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

时间:2010/4/13 16:59:00来源:本站整理作者:我要评论(0)

Java多线程如何防止主线的阻塞?

Java多线程在我们尽情的使用中存在着很多的问题,首先就是如何解决主线的阻塞问题。看完下面的代码希望你对此有所启发。在不断的学习中才能有更好的技术突破。Java多线程防止主线阻塞代码如下:

  1. if(e.getSource()==startItem)  
  2. {//运行多线程爬虫  
  3. stateLabel.setText("运行中....");  
  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("运行");  
  13. new Thread(  
  14. new Runnable(){   
  15. public void run()   
  16. {  
  17. //要在另一个线程做得事情  
  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("创建线程池:<br>");  
  24. String tempstr="<hr>" +  
  25. "创建线程池:" +  
  26. "<br>设置最小线程数目:"+minN+  
  27. "<br>设置最大线程数目:"+maxN+  
  28. "<br>设置空闲线程存活时间(秒):"+aliveT+  
  29. "<br>设置阻塞线程队列大小为:"+blockQN+  
  30. "<hr>" +  
  31. "设置本地映射目录为:" +  
  32. "<br>"+dir_path+  
  33. "<hr>" +  
  34. "<br>爬取入口网页为:" +  
  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没有结束  
  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秒 以便在队列中能够有更多的链接  
  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("欢迎使用本网站结构分析软件");  
  58. //setEditorContent(true,shuoming);  
  59. }   
  60. }).start();  
  61. }  
  62. else  
  63. {  
  64. showMessageBox("已经开始运行了..不要乱按了.
    闲得慌就到www.51cto.com网站看文章去吧..");  
  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多线程代码的相关介绍,希望大家有所收获。

相关视频

    没有数据

相关阅读 jdk不是有效的win32程序怎么办 jdk不是有效的win32程序解决方法java设置cookie教程 java怎么设置cookiejava怎么设置随机数 java设置随机数详细教程java怎么设置光标位置 java设置光标位置教程如何在Mac上清除Java高速缓存?如何在Mac上卸载Java?Mac上怎么卸载Java?OSX 10.11 java 6不兼容问题解决办法如何为Mac更新Java?java mac版更新教程

文章评论
发表评论

热门文章 JS文件中的中文在网页

最新文章 JS文件中的中文在网页关于一些Play 1.0.1资 JAVA中抽象类与接口的区别Java技巧:关于Cookie的操作JAVA AWT图形用户界面设计巧用Java将Word转换为Html网页文件

人气排行 JS文件中的中文在网页上显示为乱码解决方法怎么为Java程序添加漂亮背景图片代码JAVA AWT图形用户界面设计怎样获取java线程中信息JS简介及特点Java面向对象编程学习总结js鼠标滑过切换层效果代码下载教你java使用回调和线程处理响应全过程