在Android / Java中运行线程时:
public void run()
{
while (running)
{
if (moreTasksToExec())
{
task = getNextTask()
task.exec();
}
}
}
是否可以让它运行并且不使用信号量来阻止而不需要执行任何工作?
我只使用一个线程,所以我不需要线程间同步。
答案 0 :(得分:2)
两个线程可以获得相同的下一个任务,并尝试同时运行相同的任务。所以我会这么认为。
答案 1 :(得分:1)
你可能会更好:
public void run()
{
while (true) {
task = getNextTask(); // blocks until task available
if (task == null)
break;
}
}
如果是时候停止运行,getNextTask()会返回null。或者,检查“task == STOP_TASK”并将当前设置的任何代码运行=假发后STOP_TASK到任务队列。
另一种方法是使用Thread.interrupt()来唤醒一个睡眠者,但总会觉得自己很邋.. : - )
如果您确实保留了上述方法,请确保“running”声明为volatile,如果它可以被另一个线程修改。
答案 2 :(得分:0)
你至少应该在那里睡一觉,这样你就不会占用cpu了。