相关疑难解决方法(0)

状态机有哪些问题?

状态机最适合哪种编程问题?

我已经阅读过有关使用状态机实现的解析器,但是想了解一些尖叫出来作为状态机实现的问题.

algorithm state

14
推荐指数
2
解决办法
4389
查看次数

Java中的线程状态机

有没有办法在等待更改的状态中持有线程?我的意思是等待发生的事情(更改var,调用方法等).也许它需要使用事件监听器或同步的对象/方法.

像这样的状态机通常的方法

statemachine的例子

这使用了一个do {..} while(true)循环,它可以用于单个线程(并且没有GUI)应用程序,但是它不能用于线程..(至少你想为每个线程状态机使用一个核心)

因此,为了避免处理器消耗任务一个简单(和丑陋)的方式是"定期检查",我的意思是添加一个Sleep其他想法是定义一个同步对象并使用等待而不是线程睡眠

例:

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);
Run Code Online (Sandbox Code Playgroud)

缺点是使用synchronized增加复杂性或者在TIME_CONST内发生的任何事情都是不可见的

我想知道其他想法,谢谢!

java multithreading synchronized state-machine switch-statement

2
推荐指数
1
解决办法
2175
查看次数