gpt4 book ai didi

java - 为 Callable 类型线程分配优先级

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:10 26 4
gpt4 key购买 nike

我正在处理 Threads 任务,该任务需要为可调用线程分配优先级。

这是我的代码。

public void processURL(String[] synchronous, String[] asynchronous) {
ExecutorService es = Executors.newFixedThreadPool(NTHREADS);
for (int i = 0; i < asynchronous.length; i++) {
es.execute(new TaskAsyn("Asynchronous Task: " + i, asynchronous[i],
waiting));
}

List<Future<ToStore>> futures = new ArrayList<Future<ToStore>>();
for (int i = 0; i < synchronous.length; i++) {
Future<ToStore> future = es.submit(new TaskSynch(
"synchronous Task: " + i, synchronous[i], waiting));
futures.add(future);
}

for (Future<ToStore> future : futures) {
try {
ToStore s = future.get();
// TODO
System.out.println("Synchronous Task: " + s.getUrl()
+ " has finished.");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}

System.out.println("here");
}

在可调用线程中同步执行以在未来获得结果。在可运行线程中异步执行。

我也可以制作异步可调用线程;这不是重点,所以我唯一的问题是如何让 ExecuterService 被分配优先级线程。

最佳答案

您可以使用自定义线程工厂实例化您的执行器。

public class MyThreadFactory implements ThreadFactory {
public Thread newThread(Runnable r) {
Thread t = new Thread(r);
t.setPriority(Thread.MAX_PRIORITY); //Or whatever priority
return t;
}
}

ExecutorService es = Executors.newFixedThreadPool(NTHREADS,new MyThreadFactory());

关于java - 为 Callable 类型线程分配优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12109940/

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