時々出力が得られるのはなぜですか:
患者 4 が診察室を訪れます。
患者 2 が診察室を訪れます。
患者 1 が診療所を訪れます。
出力が昇順、つまり患者 1、次に患者 2 または 3、次に患者 4 または 5 であると予想している場合。つまり、最初の for ループ以降、0 になる前に print 4 を確認する方法を理解できません。メインクラスは患者番号を設定するもので、すぐにスレッドを開始します。
これが私のコードです:
public static void main(String[] args)
{
NUM_P = 5;//TEMPORARILY HARD CODE, WILL TAKE ARG FROM COMMANDLINE IN THE FUTURE
NUM_A = 2;
Patient[] myPatients = new Patient[NUM_P];
for (int i = 0; i < NUM_P; i++)
{
Patient patient = new Patient();
patient.setPatientNumber(i);
myPatients[i] = patient;
myPatients[i].start();
}
}
患者クラスでは、
public void run()
{
attendParty();
visitDoctor();
}
public void visitDoctor()
{
System.out.println("Patient-"+(this.getPatientNumber())+" visits doctor office.");
}
public void attendParty() throws InterruptedException
{
Random randomGen = new Random();
int val = randomGen.nextInt(101);
if (val < 20)
{
interrupt();
//NO NEED TO CREATE A PATIENT THREAD, THE PATIENT IS NOT SICK HEHE
}
else
{
this.setSickness(true);//He is sick
}
}