我想中断长时间工作的线程。在我的例子里面run()方法出现很多不同的方法,需要花费很多时间(例如写入数据库)。我想停止(杀死)另一个线程。我看到的解决方案,如:中断长工作线程
while(!Thread.currentThread().isInterrupted()){
try{
// do stuff
}catch(InterruptedException e){
Thread.currentThread().interrupt(); // propagate interrupt
}
}
但我没有while循环内我的代码。任何人都可以帮我解决这个问题吗?
下面的代码:
public void run() //parsingThread
{
try {
for(int index=0; index<tasks.size();)
{ //do sth
if(Thread.currentThread().isInterrupted()==true)
{
System.out.println("Parsing ABORTED");
Thread.currentThread().interrupt();
}
}
for(int index=0; index<1000;index++)
{ //do sth
if(Thread.currentThread().isInterrupted()==true)
{
System.out.println("Parsing ABORTED");
Thread.currentThread().interrupt();
}
}}
您似乎已经知道您需要做什么。您尚未发布任何自己的代码,因此很难明白您为什么期待我们。 –
如果你想从另一个线程调用'thread.interrupt()'来杀死一个线程,其中'thread'是一个长工作线程。不要使用Thread.currentThread()。interrupt();'这就像打断你自己。 – Codebender
@AbishekManoharan,OP从不建议中断当前线程。我想你误解了这个问题。 – aioobe