join为合并线程,待此线程执行完成后,再执行其它线程,其它线程阻塞。相当于插队。与sleep不同的是,join是一个成员方法,使用时候需要用Thread的对象来使用。
public class BlockedSleep01 {
public static void main(String[] args) {
//一份资源
Web12306 wb = new Web12306();
System.out.println(Thread.currentThread().getName());
//多个代理
new Thread(wb,"码畜").start();
new Thread(wb,"码农").start();
new Thread(wb,"码蝗").start();
}
}
class Web12306 implements Runnable {
//票数
private int ticketNums = 99;
@Override
public void run() {//run方法无法对外抛出异常 只能try catch
while(true) {
if(ticketNums<0) {
break;
}
//模拟网络延时
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"---->"+ticketNums--);
}
}
}