JAVA:我可以只强制执行一个线程吗?

时间:2016-06-21 07:56:20

标签: java multithreading singleton

有没有办法只强制执行一个线程对象?  像线程单身的东西?

为了说明,请考虑以下示例:

  1. 我有一个可运行的实现类。
  2. 我希望我能够只调用一次对象的start()方法。

3 个答案:

答案 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();
        }

    }

}

欢迎您的评论。