现有一百个快递待派发,定义快递类Expresses 作为公共资源类,定义快递员线程类Mailman ,请开启三个线程派发此100个快递,并打印哪个快递员派发了哪一个快递。
public class Expresses {
private String name;
public Expresses() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Expresses(String name) {
this.name = name;
}
}
public class Mailman extends Thread{
private static Expresses[] ex = new Expresses[100];
static {
for (int i = 0; i < 100; i++) {
// 给100个快递赋予 名称
ex[i] = new Expresses("快递-->"+i);
}
}
private int index;
private int number;
@Override
public void run() {
for (int i = 0; i < 100; i++) {
synchronized (Mailman.class) {
if (index < 100) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
//遍历得到对象数组每一个对象
Expresses e = ex[index++];
// 输入那个线程(快递员)派发了哪一份快递
System.out.println(Thread.currentThread().getName()+"派送了"+e.getName()+"快递");
number++;
}
}
}
System.out.println(getName() + "发了" + number+"份快递");
}
}
public static void main(String[] args) {
Mailman m1 = new Mailman();
m1.start();
Mailman m2 = new Mailman();
m2.start();
Mailman m3 = new Mailman();
m3.start();
}