你的第一个问题:在构造函数中启动一个线程,并传递
thisescapes
this。这意味着你实际上是在完全构造对象之前给出对对象的引用。该线程将在构造函数完成之前启动。这会导致各种奇怪的行为。
关于第二个问题:在Java中没有强制其他线程停止的方法,因此你将使用一个变量,线程将检查该变量以知道是否应该停止。另一个线程将其设置为指示第一个线程将停止。该变量必须是易失性的,或者所有访问都必须同步,以确保正确发布。这是一些你想要的代码。
public class MyNewThread implements Runnable { private final Thread t; private volatile boolean shouldStop = false; MyNewThread() { t = new Thread (this, "Data Thread"); } public void start() { t.start(); } public void stop() { shouldStop = true; } public void run() { while(!shouldStop) { // do stuff } }}
任何想要创建和启动线程的方法都会:
MyNewThread thread = new MyNewThread();thread.start();
想要停止线程的任何事情都会做:
thread.stop();
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)