정적 성형 변수 X 가 있 습 니 다. 초기 값 은 0 입 니 다. JAVA 로 네 개의 스 레 드 를 쓰 고 두 개 는 1 을 더 하고 두 개 는 1 을 줄 입 니 다. X 는 0 일 때 줄 이지 않 습 니 다. X 는 5 시 에 프로그램 을 끝 냅 니 다.
정적 성형 변수 X 가 있 습 니 다. 초기 값 은 0 이 고 JAVA 로 네 개의 스 레 드 를 쓰 고 두 개 는 1 을 더 하고 두 개 는 1 을 줄 이 며 X 는 0 일 때 줄 이지 않 습 니 다. X 는 5 시 에 프로그램 을 끝 냅 니 다.
나의 실현 방식:
import java.util.Random;
public class StaticThread {
private static int X=0;
private static Random rd=new Random();
public synchronized static void add(){
if(X!=0){
StaticThread.class.notifyAll();
}
X++;
System.out.println(Thread.currentThread().getName()+": "+"add x: "+X);
}
public synchronized static void substract(){
try{
if(X==0){
StaticThread.class.wait();
}
}catch(InterruptedException e){
}
X--;
System.out.println(Thread.currentThread().getName()+": "+"substract x: "+X);
}
static class StaticAddThread extends Thread{
public void run(){
while(true){
if(X==5){
System.out.println("X=5");
System.exit(0);
}
add();
try{
Thread.sleep(rd.nextInt(1000));
}catch(InterruptedException e){
}
}
}
}
static class StaticSubstractThread extends Thread{
public void run(){
while(true){
if(X==5){
System.out.println("X=5");
System.exit(0);
}
substract();
try{
Thread.sleep(rd.nextInt(1000));
}catch(InterruptedException e){
}
}
}
}
public static void main(String[] args){
StaticAddThread sat1=new StaticAddThread();
StaticAddThread sat2=new StaticAddThread();
StaticSubstractThread sst1=new StaticSubstractThread();
StaticSubstractThread sst2=new StaticSubstractThread();
sat1.start();
sst1.start();
sat2.start();
sst2.start();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.