【发布时间】:2010-01-07 12:41:38
【问题描述】:
有没有办法让线程处于等待更改的状态? 我的意思是等待发生某些事情(更改 var、调用方法等) 也许它需要使用事件监听器,或者同步对象/方法..
这种状态机的常用方法
这使用了一个 do{..}while(true) 循环,该循环可以用于单线程(并且没有 GUI)应用程序,但它不能与线程一起使用。 (至少你想为每个线程状态机使用一个核心)
因此,以一种简单(且丑陋)的方式避免该处理器消耗任务 是一个“定期检查器”,我的意思是添加一个睡眠 另一个想法是定义一个同步对象并使用等待而不是线程睡眠
示例:
do{
Switch(state)
{
case STATE_A:
//..A things
break;
case STATE_B:
//..B things
break;
...
case STATE_Z:
//..Z things
break;
}
// Here! => wait()? Thread.sleep(TIME_CONST)? //Hold and yield
}while(powerOn);
缺点是使用同步增加了复杂性,或者在 TIME_CONST 内发生的任何事情都将是不可见的
我想知道这样做的其他想法, 谢谢!
【问题讨论】:
标签: java multithreading switch-statement synchronized state-machine