自定义线程 生产者消费者 join方法




生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
等待生产者
生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
生产了一个香蕉,价格为:7.3....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
等待生产者
生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
等待生产者
生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...


3.守护线程


public class HouProcess extends Thread
{
	public HouProcess(String name)
	{
		super(name);
	}
	public void run() 
	{
		for(int i = 1;i<=100;i++)
		{
			System.out.println("更新包已经下载了"+i+"%");
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		System.out.println("更新包下载完成,等待安装");
	}
	public static void main(String[] args) 
	{
		HouProcess h = new HouProcess("后台进程");
		h.setDaemon(true);//让h线程成为守护线程
		System.out.println("是守护进程吗? "+h.isDaemon());
		h.start();
		for(int i = 1;i<=100;i++)
		{
			System.out.println("main"+i);
		}
	}
}
是守护进程吗? true
main1
main2
main3
main4
更新包已经下载了1%
main5
main6
main7
main8
main9
main10
main11
main12
main13
main14
main15
main16
main17
main18
main19
main20
main21
main22
main23
main24
main25
main26
main27
main28
main29
main30
main31
main32
main33
main34
main35
main36
main37
main38
main39
main40
main41
main42
main43
main44
main45
main46
main47
main48
main49
main50
main51
main52
main53
main54
main55
main56
main57
main58
main59
main60
main61
main62
main63
main64
main65
main66
main67
main68
main69
main70
main71
main72
main73
main74
main75
main76
main77
main78
main79
main80
main81
main82
main83
main84
main85
main86
main87
main88
main89
main90
main91
main92
main93
main94
main95
main96
main97
main98
main99
main100

4.


class Mom extends Thread
{
	public void run() {
		System.out.println("洗菜炒菜");
		System.out.println("没有酱油了....");
		System.out.println("叫儿子打酱油");
		Son s = new Son();
		s.start();
		try {
			s.join();//儿子加入线程,老妈暂停
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("继续炒菜");
		System.out.println("一起吃饭");
	}
}

class Son extends Thread 
{
	public void run() {
		System.out.println("儿子跑去买酱油...");
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("买回来了");
	}
}

public class Join1 {
	public static void main(String[] args) {
		Mom m = new Mom();
		m.start();
	}
}

运行结果:

洗菜炒菜
没有酱油了....
叫儿子打酱油
儿子跑去买酱油...
买回来了
继续炒菜
一起吃饭


生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
等待生产者
生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
生产了一个香蕉,价格为:7.3....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
等待生产者
生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...
消费者消费了一个产品!!!....唤醒生产者.....
等待生产者
生产了一个苹果,价格为:3.2....唤醒消费者....
正在等待消费者
消费者正在消费...


3.守护线程


public class HouProcess extends Thread
{
	public HouProcess(String name)
	{
		super(name);
	}
	public void run() 
	{
		for(int i = 1;i<=100;i++)
		{
			System.out.println("更新包已经下载了"+i+"%");
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		System.out.println("更新包下载完成,等待安装");
	}
	public static void main(String[] args) 
	{
		HouProcess h = new HouProcess("后台进程");
		h.setDaemon(true);//让h线程成为守护线程
		System.out.println("是守护进程吗? "+h.isDaemon());
		h.start();
		for(int i = 1;i<=100;i++)
		{
			System.out.println("main"+i);
		}
	}
}
是守护进程吗? true
main1
main2
main3
main4
更新包已经下载了1%
main5
main6
main7
main8
main9
main10
main11
main12
main13
main14
main15
main16
main17
main18
main19
main20
main21
main22
main23
main24
main25
main26
main27
main28
main29
main30
main31
main32
main33
main34
main35
main36
main37
main38
main39
main40
main41
main42
main43
main44
main45
main46
main47
main48
main49
main50
main51
main52
main53
main54
main55
main56
main57
main58
main59
main60
main61
main62
main63
main64
main65
main66
main67
main68
main69
main70
main71
main72
main73
main74
main75
main76
main77
main78
main79
main80
main81
main82
main83
main84
main85
main86
main87
main88
main89
main90
main91
main92
main93
main94
main95
main96
main97
main98
main99
main100

4.


class Mom extends Thread
{
	public void run() {
		System.out.println("洗菜炒菜");
		System.out.println("没有酱油了....");
		System.out.println("叫儿子打酱油");
		Son s = new Son();
		s.start();
		try {
			s.join();//儿子加入线程,老妈暂停
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("继续炒菜");
		System.out.println("一起吃饭");
	}
}

class Son extends Thread 
{
	public void run() {
		System.out.println("儿子跑去买酱油...");
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("买回来了");
	}
}

public class Join1 {
	public static void main(String[] args) {
		Mom m = new Mom();
		m.start();
	}
}

运行结果:

洗菜炒菜
没有酱油了....
叫儿子打酱油
儿子跑去买酱油...
买回来了
继续炒菜
一起吃饭

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值