이 기사는 여러 윈도우 티켓팅 문제의 다중 스레딩 구현, 즉 동기화 된, lock () 및 Unlock ()를위한 두 가지 걸음을 소개합니다.
특정 코드는 다음과 같습니다.
첫 번째 유형 :
패키지가 실행 가능; java.util.concurrent.locks.lock import; java.util.concurrent.locks.reentrantlock import; / * * 동기화 * 여기에서 잠글 수있는 두 가지 방법이 있습니다 * 1. Synchronized * 2.lock () 및 unlock () */ public class myrunnable empless runnable {private int tickets = 100; // 잠금 잠금 상태 정의 개인 잠금 잠금 = 새로운 retrantlock (); public void run () {while (true) {// lock.lock (); if (tickets> 0) {try {Thread.Sleep (100); } catch (InterruptedException e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } system.out.println (Thread.currentThread (). getName () + "판매" + (티켓-) + "티켓"); } lock.unlock (); }}}결과:
두 번째 유형 :
패키지가 실행 가능; / * * 동기화 * 여기에서 잠글 수있는 두 가지 방법이 있습니다 * 1. SynCronized * 2.lock () 및 Unlock () */ public class myRunnable emplements runnable {private int tickets = 100; public void run () {while (true) {synchronized (this) {if (tickets> 0) {try {thread.sleep (100); } catch (InterruptedException e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } system.out.println (Thread.currentThread (). getName () + "판매" + (티켓-) + "티켓"); }}}}}결과:
패키지가 실행 가능; 공개 클래스 runnabledemo {public static void main (String [] args) {myrunnable myrunnable = new myrunnable (); 스레드 t1 = 새 스레드 (myrunnable, "window one"); 스레드 T2 = 새 스레드 (Myrunnable, "Window Two"); 스레드 T3 = 새 스레드 (Myrunnable, "Window Three"); t1.start (); t2.start (); t3.start (); }}우연의 일치인지는 모르겠지만,이 두 개의 멀티 스레드 작은 인스턴스를 실행할 때 컴퓨터가 갑자기 붙어 있었고 Eclipse를 빨리 켰습니다.
프로세스 종료에 대한 진술이 있으며 추가되지 않았습니다. 직접 참조하십시오.
위는 Java 다중 스레드 윈도우 티켓팅 문제 예제에 대한이 기사의 전체 내용입니다. 단속에 도움이되기를 바랍니다. 궁금한 점이 있으면 언제든지 메시지를 남겨 주시고 귀중한 의견을 기대하십시오.