gpt4 book ai didi

java - 从java中的线程池运行静态方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:39:39 28 4
gpt4 key购买 nike

使用线程池在多个线程中运行静态方法的最佳方法是什么?我也试图将一个参数传递给静态方法。像

Class A{
public static runTask(int i){
....
}

}

从一个主要的:

ThreadPool pool = new ThreadPool(5, "poolname");

for(int i=1; i<10; i++){

A.runTask(i) // but on a new thread...

}

谢谢!

最佳答案

查看 java.util.concurrent.Executors 的文档 。它应该满足您的需求。这是一个使用它的简单示例:

public class ExecutorServiceTest {
static ExecutorService threadPool = Executors.newCachedThreadPool();

public static void main(String[] args) throws Exception {
// Queue 10 executions of someTask into the threadPool
for(int i = 0; i < 10; i++) {
runSomeTaskInThreadPool();
}
// the shutdown method causes the executor to:
// 1. stop accepting new tasks, and
// 2. allow previously queued jobs to complete, and
// 3. shut down all pooled threads once all jobs are complete
threadPool.shutdown();
// block until the threadPool has finished shutting down,
// which indicates that all tasks have finished executing
threadPool.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
}

private static void runSomeTaskInThreadPool() {
Future future = threadPool.submit(new Runnable() {
public void run() {
someTask();
}
});
// TODO: Maybe keep track of futures to monitor success/failure of task
}

static AtomicInteger counter = new AtomicInteger();
public static void someTask() {
System.out.println("someTask: " + counter.incrementAndGet()
+ " on thread: " + Thread.currentThread());
}
}

关于java - 从java中的线程池运行静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4254550/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com