两个线程A和B,任务都是打印当前时间,要求编码实现:线程A和B同时启动后,以先A后B的方式任务交叉执行10次。

       明确任务:两个线程A和B,任务都是打印当前时间,要求编码实现:线程A和B同时启动后,以先A后B的方式任务交叉执行10次。

        对于这道题,首先,我们应该明确两个线程交互执行的含义:线程A和线程B共享一个处理机资源,线程A首先获得处理机,线程B处于就绪状态,线程A执行一次后,线程B获得处理机资源,线程A处于就绪状态,依次循环,直到线程A和线程B执行结束。

       解题思路:设置共享资源Object o = new Object(),设置互斥信号量boolean flag = true,进行线程同步,线程A执行一次后,唤醒线程B,线程A处于等待状态,线程B执行后亦是如此,如此循环往复,实现了线程A和线程B交互执行10次。

       代码如下:

import java.util.Date;

public class ThreadEx {
	private Object o = new Object(); // 共享资源
	private boolean flag = true; // 互斥信号量

	class Thread1 extends Thread {
		public void run() {
			synchronized (o) { // 线程同步
				for (int i = 1; i <= 10; i++) {
					System.out.println("New thread-->A:" + new Date());
					
					o.notify(); // 唤醒另外一个进程
					if(flag)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值