有没有办法只强制执行一个线程对象? 像线程单身的东西?
为了说明,请考虑以下示例:
答案 0 :(得分:0)
您可以将布尔值作为属性来检查线程是否已经启动
答案 1 :(得分:0)
在static
中添加boolean
Runnable
字段,并在run
方法的开头检查,如下所示:
synchronized(MyRunnable.class) {
if(alreadyRan) {
return;
}
alreadyRan = true;
}
答案 2 :(得分:0)
嗯,在这个帖子中我的朋友的提示,我达到了以下目的:
public class TestThread extends Thread {
static private TestThread _instance = null;
private TestThread() {}
public static TestThread getThread(){
if(_instance == null)
_instance = new TestThread();
return _instance;
}
@Override
public void run()
{
System.out.println("Hello");
}
}
这是使用它的一个例子,当第二次调用start时抛出异常:
public class Main {
public static void main(String[] args) {
try {
TestThread.getThread().start();
TestThread.getThread().start();
} catch (IllegalThreadStateException e) {
System.out.println("Error: Tried to start more than one instance of this thread!");
e.printStackTrace();
}
}
}
欢迎您的评论。