public class BoyFrienAndGirlFriend { public static void main(String[] args) { System.out.println("男朋友和女友之间有趣的故事...."); Thread BoyFriend = new Thread(new BoyFriend()); BoyFriend.start(); } } class BoyFriend implements Runnable{ public void run() { System.out.println("男朋友叫女朋友去洗澡...."); //创建一个女朋友对象 Thread GirlFriend = new Thread(new GirlFriend()); //叫女朋友去洗澡 GirlFriend.start(); //在父类中,让子类执行完成后,自己在执行 //当某个程序( 男朋友 )执行流中调用其他( 女朋友 )线程的 join() 方法时, //调用线程( 男朋友 )将被阻塞,直到 join() 方法加入的 join 线程执行完为止 //总结 谁调用 谁就会被阻塞 这了的谁 是指当前线程(男朋友) //join 方法实现了 接口的 插拔式: try { GirlFriend.join(); } catch (InterruptedException e) { } System.out.println("女朋友终于洗完了,男朋友很开心,很爽!!!!!"); }} class GirlFriend implements Runnable{ public void run() { System.out.println("女朋友去洗澡...."); for (int i = 1; i <= 5; i++) { try { Thread.sleep(1000); } catch (InterruptedException e) { } System.out.println("你朋友洗澡第"+(i * 10)+"分钟..."); } System.out.println("女朋友洗澡出来了......"); }} class descreption{ /** * 第一个版本 * * 男朋友和女友之间有趣的故事.... 男朋友叫女朋友去洗澡.... 女朋友终于洗完了,男朋友很开心,很爽!!!!! 女朋友去洗澡.... 你朋友洗澡第10分钟... 你朋友洗澡第20分钟... 你朋友洗澡第30分钟... 你朋友洗澡第40分钟... 你朋友洗澡第50分钟... 女朋友洗澡出来了...... */ /** * 第二个版本 * * * 男朋友和女友之间有趣的故事.... 男朋友叫女朋友去洗澡.... 女朋友去洗澡.... 你朋友洗澡第10分钟... 你朋友洗澡第20分钟... 你朋友洗澡第30分钟... 你朋友洗澡第40分钟... 你朋友洗澡第50分钟... 女朋友洗澡出来了...... 女朋友终于洗完了,男朋友很开心,很爽!!!!! * */ }