java中一个线程池调用shudown()方法,就不再接受任务,如何实现线程复用呢,有没有永不shutdown的全局池

发布网友 发布时间: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");}}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com