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()/*,
  22. new ThreadPoolExecutor.CallerRunsPolicy()*/);
  23. //editor_pane.setText("创建线程池:
    ");
  24. String tempstr="
    " +
  25. "创建线程池:" +
  26. "
    设置最小线程数目:"+minN+
  27. "
    设置最大线程数目:"+maxN+
  28. "
    设置空闲线程存活时间(秒):"+aliveT+
  29. "
    设置阻塞线程队列大小为:"+blockQN+
  30. "
    " +
  31. "设置本地映射目录为:" +
  32. "
    "+dir_path+
  33. "
    " +
  34. "
    爬取入口网页为:" +
  35. "
    "+web_url+"
    ";
  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. }).start();
  60. }
  61. else
  62. {
  63. showMessageBox("已经开始运行了..不要乱按了.
    闲得慌就到www.51cto.com网站看文章去吧..");
  64. String comd = "explorer http://www.blesslucky.com/";
  65. try {
  66. Runtime.getRuntime().exec(comd);
  67. } catch (IOException e1) {
  68. e1.printStackTrace();
  69. }
  70. }

以上就是对Java多线程代码的相关介绍,希望大家有所收获。

当前题目:Java多线程如何防止主线的阻塞
转载注明:http://www.shufengxianlan.com/qtweb/news34/476034.html

成都网站建设公司_创新互联,为您提供做网站电子商务关键词优化App开发服务器托管网站收录

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联