📄 controller.java
字号:
package concurrency.cruise;
class Controller {
final static int INACTIVE = 0; // cruise controller states
final static int ACTIVE = 1;
final static int CRUISING = 2;
final static int STANDBY = 3;
private int controlState = INACTIVE; //initial state
private SpeedControl sc;
private boolean isfixed;
Controller(CarSpeed cs, CruiseDisplay disp, boolean b)
{sc=new SpeedControl(cs,disp); isfixed=b;}
synchronized void brake(){
if (controlState==CRUISING )
{sc.disableControl(); controlState=STANDBY; }
}
synchronized void accelerator(){
if (controlState==CRUISING )
{sc.disableControl(); controlState=STANDBY; }
}
synchronized void engineOff(){
if(controlState!=INACTIVE) {
if (isfixed && controlState==CRUISING) sc.disableControl(); //bugfix
controlState=INACTIVE;
}
}
synchronized void engineOn(){
if(controlState==INACTIVE)
{sc.clearSpeed(); controlState=ACTIVE;}
}
synchronized void on(){
if(controlState!=INACTIVE){
sc.recordSpeed(); sc.enableControl();
controlState=CRUISING;
}
}
synchronized void off(){
if(controlState==CRUISING )
{sc.disableControl(); controlState=STANDBY;}
}
synchronized void resume(){
if(controlState==STANDBY)
{sc.enableControl(); controlState=CRUISING;}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -