놀이터에서 원형 교차로를 사용하기 위해 기다리는 어린이 대기열이 두 개 있습니다. 하나는 북쪽에서, 다른 하나는 남쪽에서 직면합니다. 아이들은 어느 쪽 큐 앞에서 만 로터리를 입력 할 수 있으며 사용 가능한 공간이있는 경우에만 입력 할 수 있습니다 (한 번에 하나의 자식 만 각 세그먼트를 사용할 수 있습니다). 원형 교차로에서 일단 무작위로 사용하면 동쪽이나 서쪽으로 무작위로 나옵니다. 그런 다음 무작위로 다른 곳에서 연주 한 다음 북쪽/남쪽 칸을 무작위로 다시 입력하고 무한정 재생합니다. 원형 교차로는 시계 방향으로 회전하고 큐잉 자식은 항상 따라 오는 첫 번째 공간을 사용합니다. 자바 세마포어를 사용하여 프로그램을 작성하여 공유 원형 경기 객체에 대한 액세스를 자식을 나타내는 일련의 프로세스별로 동기화합니다.Java Semaphore north south que
여기까지 내가 지금까지 한 일이 있으며 다음에 무엇을해야할지 모르겠다. Main 클래스에서는 무엇을해야합니까?
import java.util.Random;
public class Child extends Thread {
private Random random;
private int which;
private int number;
public Child(int number) {
this.number = number;
random = new Random();
this.which = random.nextInt(2);
}
public void run() {
//start point?
}
public int getNumber() {
return number;
}
private void checkQuePosition() {
if (atFront())
tryToGetOn();
else
checkQuePosition();
}
//returns true if at front of que, else false
private boolean atFront() {
int position;
if (which == 0)
position = Playground.north.que.search(this);
else
position = Playground.south.que.search(this);
return position == 1;
}
private void tryToGetOn() {
Playground.roundabout.semaphore.acquire();
//get into the roundabout somehow
}
//releases semaphore, sleeps for a random period then calls joinQue(random 0 or 1)
public void getOff() {
Playground.roundabout.semaphore.release();
Thread.sleep(random.nextLong());
joinQue(random.nextInt(2));
}
private void joinQue(int w) {
this.which = w;
if (w == 0) {
//join north que
}
else
;//join south que
checkQuePosition();
}
}
나는 여기에있다. 나는 지금 길을 잃었다! 도와주세요
실제로 읽을 수 있도록 코드 블록으로 포맷 할 수 있습니까? 또한, "숙제"꼬리표는 여기 집에서 느낄 것입니다 ... – Romain
왜 질문 텍스트가 삭제 되었습니까? – Mizipzor
질문 텍스트를 복원했습니다. Mult는 그런 질문을 삭제하지 마십시오. 자신의 질문을 삭제할 수 있지만 모든 텍스트를 지우고 오해의 소지가있는 태그를 변경하는 것은 매우 나쁜 형태입니다. – Jherico