发布网友 发布时间:2022-04-23 18:01
共1个回答
热心网友 时间:2023-10-12 02:46
中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的操作。线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序。虽然初次看来它可能显得简单,但是,你必须进行一些预警以实现期望的结果。你最好还是牢记以下的告诫。首先,忘掉Thread.stop方法。虽然它确实停止了一个正在运行的线程,然而,这种方法是不安全也是不受提倡的,这意味着,在未来的JAVA版本中,它将不复存在。中断线程最好的,最受推荐的方式是,使用共享变量(sharedvariable)发出信号,告诉线程必须停止正在运行的任务。线程必须周期性的核查这一变量(尤其在冗余操作期间),然后有秩序地中止任务。具体的示例代码如下:classExampleextendsThread{volatilebooleanstop=false;publicstaticvoidmain(Stringargs[])throwsException{Example2thread=newExample2();System.out.println("Startingthread");thread.start();Thread.sleep(3000);System.out.println("Askingthreadtostop");thread.stop=true;Thread.sleep(3000);System.out.println("Stoppingapplication");//System.exit(0);}publicvoidrun(){while(!stop){System.out.println("Threadisrunning");longtime=System.currentTimeMillis();while((System.currentTimeMillis()-time<1000)&&(!stop)){}}System.out.println("Threadexitingunderrequest");}}