면접 관:ABC 세 스 레 드 는 어떻게 순서 집행 을 보장 합 니까?
14974 단어 다 중 스 레 드
public class ThreadOderRun {
public static void main(String[] args) {
ThreadOderRun threadOderRun = new ThreadOderRun();
CountDownLatch l1 = new CountDownLatch(0);
CountDownLatch l2 = new CountDownLatch(1);
CountDownLatch l3 = new CountDownLatch(1);
Thread work1 = new Thread(threadOderRun.new Work(l1, l2, "1"));
Thread work2 = new Thread(threadOderRun.new Work(l2, l3, "2"));
Thread work3 = new Thread(threadOderRun.new Work(l3, l3, "3"));
work1.start();
work2.start();
work3.start();
}
class Work implements Runnable {
CountDownLatch c1;
CountDownLatch c2;
String msg;
public Work(CountDownLatch c1, CountDownLatch c2, String msg) {
this.c1 = c1;
this.msg = msg;
this.c2=c2;
}
public void run() {
try {
c1.await();
System.out.println(msg);
c2.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Atom 원자 류 AtomicInteger 사용 하기
public class ThreadOrderRun2 {
private AtomicInteger val = new AtomicInteger(1);
public static void main(String[] args) {
ThreadOrderRun2 threadOrderRun2 = new ThreadOrderRun2();
Thread work1 = new Thread(threadOrderRun2.new Work("1", 1));
Thread work2 = new Thread(threadOrderRun2.new Work("2", 2));
Thread work3 = new Thread(threadOrderRun2.new Work("3", 3));
work1.start();
work2.start();
work3.start();
}
class Work implements Runnable {
private String msg;
private int order;
public Work(String msg, Integer order) {
this.msg = msg;
this.order = order;
}
public void run() {
while (true) {
try {
Thread.sleep(100);
if (val.get() == order) {
System.out.println(msg);
val.incrementAndGet();
break;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 다 중 스 레 드 메커니즘 의 스 레 드 생 성target 을 실행 대상 으로 지정 한 name 을 이름 으로 하고 group 에서 참조 하 는 스 레 드 그룹의 일원 으로 새 Thread 대상 을 할당 합 니 다. 이 스 레 드 가 독립 된 Runnable 실...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.