[java 라인] 두 라인이 교차해서 12a34b56c를 출력합니다...5152z

2484 단어

나의 네티즌 smith는 어느 날 라인을 연구하여 굳이 내가 이런 효과를 실현하도록 했다. 한 라인 인쇄 1-52 다른 라인 인쇄 a-z는synchronized를 통해 두 라인의 교차 출력을 제어했다. 1 2 a 3 4 b 5 6 c...5152z, 그래서 나는 매우 고통스럽게 다음과 같은 코드를 썼다.
 
 
public class Main {
static NumT numT = new NumT();
static CharT charT = new CharT();

static char[] chars = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

public static void main(String[] args) {
synchronized (numT) {
numT.start();
numT.notifyAll();
try {numT.wait();}catch (InterruptedException e){e.printStackTrace();}
charT.start();
}
}

static class NumT extends Thread{
@Override
public void run() {
try {sleep(1000);}catch (InterruptedException e){e.printStackTrace();}
for(int i=0;i<51;){
synchronized (numT) {
System.out.println(++i);
System.out.println(++i);
numT.notifyAll();
try {numT.wait();}catch (InterruptedException e){e.printStackTrace();}
}
}
}
}

static class CharT extends Thread{
@Override
public void run() {
for(int i=0;i<26;i++){
synchronized (numT) {
System.out.println(chars[i]);
numT.notifyAll();
try {numT.wait();}catch (InterruptedException e){e.printStackTrace();}
}
}
}
}
}

좋은 웹페이지 즐겨찾기