gpt4 book ai didi

java - 如何在运行时更改线程的 Runnable 目标

转载 作者:行者123 更新时间:2023-11-30 10:03:02 25 4
gpt4 key购买 nike

我想用 Java 构建自己的 ExecutorService,它能够“提交(可调用任务)”给定任务。我打算使用一个包含多个“线程(可运行目标)”的线程池。这个想法是创建固定数量的线程,这些线程从已由“提交”方法填充的列表中取出 FutureTask 对象。 FutureTask 对象也在提交方法中创建。我的问题是我只能在创建线程时(通过构造函数)将一个Runnable对象(这里:FutureTask)交给一个线程,但显然FutureTasks需要动态分配给一个线程(当项目从列表中删除时).有什么办法吗?

// content of submit, parameter: myTask
FutureTask<V> newFutureTask = new FutureTask<V>(myTask);
taskQueue = new BlockingQueue<FutureTask<V>>();
try {
taskQueue.put(newFutureTask);
} catch (InterruptedException ex) { }
return newFutureTask;

// remove item from list and hand it over to thread
// method within MyThread extends Thread (thread pool) class
void exec() {
FutureTask<V> task;
try {
task = taskQueue.take();
// TODO: run task somehow????
} catch(InterruptedException ex) { }
}

最佳答案

看一点伪代码:

while (true) {
task = fetch task
If no task: wait/yield
Else: execute task
}

换句话说:您只需实现一个 run() 方法,该方法循环并执行任何 Runnable(或传递给它的任何内容)的运行方法。如果没有工作可用,则该方法会 hibernate 或等待通知。

关于java - 如何在运行时更改线程的 Runnable 目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56406481/

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