在多线程程如何判断任务已经结束?
发布网友
发布时间:2022-04-25 15:07
我来回答
共3个回答
热心网友
时间:2023-10-11 02:58
我觉得是思路上的问题,借鉴消费者和生产者问题模式,假设发布任务的是一个类,执行任务的是另一个类(在你的例子里有三个任务线程)。
那么只有发布任务的类才知道是否没有任务了。执行任务的类在获取任务时,检查发布任务的类是否还有任务就可以了。
class TaskManager
{
static final Task PENDING_TASK = new Task () ;
static final Task NOMORE_TASK = new Task () ;
//
Task aquireTask () ;
}
class TaskWorker
{
doWork ()
{
while (true)
{
Task t = TaskMansger.AqurieTask () ;
if (t == PENDING_TASK)
{
sleep (...) ;
continue ;
}
if (t == NOMORE_TASK)
// all task completed,
break ;
}
}
}
这是基于任务发布者要提供明确的指示,即:任务已全部完成。
如果任务发布者不能提供这一指示,那么很难实现,因为基于时间的处理不那么准确。
热心网友
时间:2023-10-11 02:58
逆程电容一般3000p左右,你用10k档可以试出好坏呀,如果试不出,可以串到220v电源里试,但必须注意安全。
热心网友
时间:2023-10-11 02:58
用分析工具,找到关键