class SalesPerson implements Runnable {
private String[] salesPersonName = { "sp1", "sp2", "sp3", "sp4", "sp5", "sp6", "sp7", "sp8" };
private static boolean stopFlag = true;
Thread th;
public SalesPerson() {
super();
th = new Thread(this);
th.start();
}
@Override
public void run() {
while (stopFlag) {
try {
int index = new Random().nextInt(7);
System.out.println(salesPersonName[index]);
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public boolean isStopFlag() {
return stopFlag;
}
public void setStopFlag(boolean stopFlag) {
SalesPerson.stopFlag = stopFlag;
}
public void suspend() {
setStopFlag(false);
}
public void resume() {
setStopFlag(true);
}
}
class Days implements Runnable {
private String[] days = { "Sunday", "Monday", "Tuesday", "Wednessday", "Thursday", "Friday", "Saturday" };
private static boolean stopFlag = false;
SalesPerson salesPerson;
public Days(SalesPerson salesPerson) {
super();
this.salesPerson = salesPerson;
Thread t = new Thread(this);
t.start();
salesPerson.suspend();
}
@Override
public void run() {
synchronized (this) {
try {
while (!stopFlag) {
for (String day : days) {
System.out.println(day);
if (day.equals("Sunday") || day.equals("Monday") || day.equals("Tuesday")) {
salesPerson.suspend();
} else if (day.equals("Wednessday")) {
salesPerson.resume();
Thread.sleep(2500);
} else {
Thread.sleep(2500);
}
}
salesPerson.suspend();
stopFlag = true;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public class SalesPersonDaysThreadTask2 {
public static void main(String[] args) {
SalesPerson person = new SalesPerson();
Thread t = new Thread(new Days(person));
t.start();
}
}