Java多线程如何防止主线的阻塞?
Java多线程在我们尽情的使用中存在着很多的问题,首先就是如何解决主线的阻塞问题。看完下面的代码希望你对此有所启发。在不断的学习中才能有更好的技术突破。Java多线程防止主线阻塞代码如下:
- if(e.getSource()==startItem)
- {//运行多线程爬虫
- stateLabel.setText("运行中....");
- try {
- URL url_url=new URL(web_url);
- web_host=url_url.getHost();
- } catch (MalformedURLException e2) {
- e2.printStackTrace();
- }
- if(tpool==null)
- {
- // System.out.println("运行");
- new Thread(
- new Runnable(){
- public void run()
- {
- //要在另一个线程做得事情
- // System.out.println("啦啦啦啦");
- tpool=new ThreadPoolExecutor(minN,maxN,aliveT,
- TimeUnit.SECONDS,
- new LinkedBlockingQueue<Runnable>()/*,
- new ThreadPoolExecutor.CallerRunsPolicy()*/);
- //editor_pane.setText("创建线程池:<br>");
- String tempstr="<hr>" +
- "创建线程池:" +
- "<br>设置最小线程数目:"+minN+
- "<br>设置最大线程数目:"+maxN+
- "<br>设置空闲线程存活时间(秒):"+aliveT+
- "<br>设置阻塞线程队列大小为:"+blockQN+
- "<hr>" +
- "设置本地映射目录为:" +
- "<br>"+dir_path+
- "<hr>" +
- "<br>爬取入口网页为:" +
- "<br>"+web_url+"<hr>";
- setEditorContent(false,tempstr);
- addToUnProQ(web_url);
- String geturl=null;
- getPage gt=null;
- while((!isUnProQEmpty())||!tpool.isTerminated())
//有没有处理的连接或者tpool没有结束- {//如果 还有连接没有被处理
- geturl=delFromUnProQ();
- if(geturl!=null)
- {
- addToProQ(geturl);
- gt=new getPage(geturl);
- tpool.execute(gt);
- }
- try {//等待0.2秒 以便在队列中能够有更多的链接
- Thread.sleep((long)(Math.random()*200));
- } catch (InterruptedException e1) {
- e1.printStackTrace();
- }
- }
- tpool.shutdown();
- tpool=null;
- stateLabel.setText("欢迎使用本网站结构分析软件");
- //setEditorContent(true,shuoming);
- }
- }).start();
- }
- else
- {
- showMessageBox("已经开始运行了..不要乱按了.
闲得慌就到www.51cto.com网站看文章去吧..");- String comd = "explorer http://www.blesslucky.com/";
- try {
- Runtime.getRuntime().exec(comd);
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- }
- }
以上就是对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使用回调和线程处理响应全过程
查看所有0条评论>>