⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scheduler.java

📁 用java实现的多电梯调度程序
💻 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 + -