gpt4 book ai didi

java - Java 中的线程状态机

转载 作者:行者123 更新时间:2023-12-03 03:36:41 29 4
gpt4 key购买 nike

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

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

statemachine example

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

因此,为了避免消耗处理器的任务,采用一种简单(且丑陋)的方式是一个“定期检查器”,我的意思是添加一个 sleep 另一个想法是定义一个同步对象并使用 wait 而不是线程 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);

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

我想知道这样做的其他想法,谢谢!

最佳答案

是的,您将使用wait/notify。这就是它的用途。

或者也许你的状态机不需要有自己的线程。当发生有趣的事情时,其他线程可以调用状态机上的 update 方法。

关于java - Java 中的线程状态机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2020290/

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