📄 scheduler.java
字号:
//import java.io.*;
import javax.swing.*;
public class Scheduler {
private SView sv ;
static ElevatorThread [] elevatorsThreads = new ElevatorThread[5];
static int dest = 0;
Scheduler(){
sv =new SView(this);
for( int i = 0; i < 5; i ++){
elevatorsThreads[i] = new ElevatorThread( sv.tubePanels[i] );
elevatorsThreads[i].setThreadID(i);
}
}
public static void main(String[] args) throws Exception {
//JFrame.setDefaultLookAndFeelDecorated(true);
Scheduler scheduler = new Scheduler();
while(true){
try{
/*DataInputStream input = new DataInputStream(
new BufferedInputStream(System.in));
dest = Integer.parseInt( input.readLine() );
*/
synchronized ( scheduler ){
scheduler.wait();
}
System.out.println("main wait ends");
int index = 0;
for( int i =0, min = 100000; i < 5; i ++ ){
if( elevatorsThreads[i].status ){ //if active ElevatorThread
if( (dest - elevatorsThreads[i].curPos > 0 ) == elevatorsThreads[i].direction //if on the same direction
&& min > Math.abs( dest - elevatorsThreads[i].curPos ) ){ //the min distance
index = i;
min = Math.abs(elevatorsThreads[i].curPos - dest);
}
}
else{ //inactive ElevatorThread
if( min > Math.abs( dest - elevatorsThreads[i].curPos ) ) { //the min distance
index = i;
min = Math.abs(elevatorsThreads[i].curPos - dest);
}
}
}
if(elevatorsThreads[index].status){ // 如果是在运行中。
elevatorsThreads[index].addDest(dest);
}else{ //如果还未运行, 则。。
elevatorsThreads[index].addDestNotify(dest);
}
}catch(Exception e ){
e.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -