Nar*_*gis 48
如果你看一下线程生命周期图像,一旦你的线程终止,你就无法回到新的位置.
所以没有办法将死线程恢复到可运行状态,而是应该创建一个新的Thread实例.
Ren*_*ink 10
我猜你扩展了这个Thread
类,你已经覆盖了这个run
方法.如果你这样做,你就可以将可运行的代码绑定到Thread
生命周期.由于Thread
无法重新启动,您必须Thread
每次都创建一个新的.更好的做法是Thread
使用Runnable
接口将代码分离为在生命周期的线程中运行.
只需run
在实现的类中提取方法即可Runnable
.然后你可以轻松重启它.
例如:
public class SomeRunnable implements Runnable {
public void run(){
... your code here
}
}
SomeRunnable someRunnable = new SomeRunnable();
Thread thread = new Thread(someRunnable);
thread.start();
thread.join(); // wait for run to end
// restart the runnable
thread = new Thread(someRunnable);
thread.start();
Run Code Online (Sandbox Code Playgroud)
如果您需要记住以前的运行状态,这种做法也很容易.
public class SomeRunnable implements Runnable {
private int runs = 0;
public void run(){
runs++;
System.out.println("Run " + runs + " started");
}
}
Run Code Online (Sandbox Code Playgroud)
PS:用a java.util.concurrent.Executor
来执行Runnable
s.这将使线程管理与执行分离.
Executor executor = Executors.newSingleThreadExecutor();
...
SomeRunnable someRunnable = new SomeRunnable();
executor.execute(someRunnable);
Run Code Online (Sandbox Code Playgroud)