Java - 运行一个线程两次

标签 java multithreading

<分区>

From another post :

If a Thread needs to be run more than once, then one should make an new instance of the Thread and call start on it.

这是怎么做到的?

最佳答案

我会使用另一层抽象。使用 ExecutorService .

这是一个简单的例子:

public static void main(String args[]) throws InterruptedException {
    final ExecutorService service = Executors.newCachedThreadPool();
    final class MyTask implements Runnable {

        @Override
        public void run() {
            System.out.println("Running my task.");
        }
    };
    for (int i = 0; i < 10; ++i) {
        service.submit(new MyTask());
    }
    service.shutdown();
    service.awaitTermination(1, TimeUnit.DAYS);
}

只需将您的任务转储到服务中,次数不限。

ExecutorService 是一个线程池 - 它有许多 Thread 来接收任务。这消除了产生新的 Thread 的开销,因为它缓存了它们。

关于Java - 运行一个线程两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19888940/

相关文章:

java - main 方法的正确语法

java - 使用Android获取异步任务JSON时出现空指针异常

c++ - 如果 std::thread 对自身调用 joinable 会发生什么?

java - 为什么这段代码不抛出 NullPointerException?

c# - 来自不同线程的统一更新变量

java - spring-boot 记录新线程的运行时异常

Java 编译了我的程序,但我无法运行它

java - java 如何与 OpenGL 交互?

java - 获取实现对象方法的类

.net - .NET 线程是否从创建线程继承它们的优先级?