자바 스 레 드 에서 기차표 파 는 문제 에 대한 심도 있 는 설명

자바 코드 로 기차표 100 장 을 모 의 판매 문제:네 개의 매 표 창구 가 동시에 표를 팔 고 같은 기차 표를 팔 수 없습니다.
코드 는 다음 과 같 습 니 다.

package lesson;
public class Demo1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Train tt = new Train();
		Thread t1 = new Thread(tt);
		Thread t2 = new Thread(tt);
		Thread t3 = new Thread(tt);
		Thread t4 = new Thread(tt);
		t1.setName("  1");
		t2.setName("  2");
		t3.setName("  3");
		t4.setName("  4");
		t1.start();
		t2.start();
		t3.start();
		t4.start();
	}
}
class Train implements Runnable{
	int a= 1;
	@Override
	public synchronized void run() {//synchronized     
		// TODO Auto-generated method stub
		while(true) {
			if(a<=100) {
		System.out.println(Thread.currentThread().getName()+"  "+a+"  ");
				a++;
			}
			try {
				this.wait(230);
//				Thread.sleep(100);//        1       2  
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
wait()정상 운행 결과 그림 1:

sleep()실행 결 과 는 그림 2 참조:

두 가지 결과 가 다른 것 은 주로 sleep 방법 이 자 물 쇠 를 풀 지 않 았 고 wait 방법 은 자 물 쇠 를 풀 어 다른 스 레 드 가 동기 제어 블록 이나 방법 을 사용 할 수 있 도록 하 는 것 이다.
총결산
자바 스 레 드 에서 기차표 파 는 문제 에 대한 심도 있 는 설명 을 담 은 이 글 은 여기까지 소개 되 었 습 니 다.자바 스 레 드 에서 기차표 파 는 문제 에 관 한 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기