Java多线程在我们尽情的使用中存在着很多的问题,首先就是如何解决主线的阻塞问题。看完下面的代码希望你对此有所启发。在不断的学习中才能有更好的技术突破。Java多线程防止主线阻塞代码如下:
以下是引用片段:
if(e.getSource()==startItem)
{//运行多线程爬虫stateLabel.setText(“运行中….”);
try{URLurl_url=newURL(web_url);
web_host=url_url.getHost();
}catch(MalformedURLExceptione2){e2.printStackTrace();
}if(tpool==null){//System.out.println(“运行”);
newThread(newRunnable(){publicvoidrun()
{//要在另一个线程做得事情//System.out.println(“啦啦啦啦”);
tpool=newThreadPoolExecutor(minN,maxN,aliveT,TimeUnit.SECONDS,
newLinkedBlockingQueue()/*,newThreadPoolExecutor.CallerRunsPolicy()*/);
//editor_pane.setText(“创建线程池:
”);
Stringtempstr=”
”
+“创建线程池:”
+“
设置最小线程数目:”+minN+“
设置最大线程数目:”+maxN+“
设置空闲线程存活时间(秒):”+aliveT+“
设置阻塞线程队列大小为:”+blockQN+“
”
+“设置本地映射目录为:”
+“
”+dir_path+“
”
+“
爬取入口网页为:”
+“
”+web_url+”
”;
setEditorContent(false,tempstr);
addToUnProQ(web_url);
Stringgeturl=null;
getPagegt=null;
while((!isUnProQEmpty())||!tpool.isTerminated())//有没有处理的连接或者tpool没有结束
{//如果还有连接没有被处理
geturl=delFromUnProQ();
if(geturl!=null){addToProQ(geturl);
gt=newgetPage(geturl);
tpool.execute(gt);
}try{//等待0.2秒以便在队列中能够有更多的链接Thread.sleep((long)(Math.random()*200));}catch(InterruptedExceptione1){e1.printStackTrace();
}}tpool.shutdown();
tpool=null;
stateLabel.setText(“欢迎使用本网站结构分析软件”);
//setEditorContent(true,shuoming);
}}).start();
}else{showMessageBox(“已经开始运行了….”);
Stringcomd=“explorer/”;
try{Runtime.getRuntime().exec(comd);
}catch(IOExceptione1){e1.printStackTrace();
}}}
以上就是对Java多线程代码的相关介绍,希望大家有所收获。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
如果觉得《java防止线程堵塞_Java多线程如何防止主线的阻塞》对你有帮助,请点赞、收藏,并留下你的观点哦!