为什么有时我会得到输出:
患者 4 访问医生办公室。
患者 2 访问医生办公室。
患者 1 访问医生办公室。
当我期望输出按递增顺序排列时,即患者 1,然后是患者 2 或 3,然后是患者 4 或 5。即,我无法理解它是如何在从初始 for 循环到 0 之前看到打印 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
}
}