并发编程处理实战篇6:多线程交替执行

场景:

由于业务需要多线程并发操作,并且多线程之间是有一定的依赖关系,比如A线程存储数据,B线程则解析数据,即B线程是需要在A 线程执行完之后才开始执行,同样A线程存储数据的也需要B线程对数据解析完成后才开始存储新的数据,因此A与B两个线程就形成了交替实现,当然具体情况比这个复杂一些,但是大致逻辑类似。

过程就是:A=>B=>A=>B=>....如此循环...

 

其实该动作和队列类似,即生产者和消费者,队列长度确定,每生产一个就消费一个,确保消费完成后才生产,不过这次实现没有用到队列类库去实现,使用多线程亦可以完成,

于是可以使用synchronized和volatile来实现,

 

具体实现

1、具体业务处理类

public class ExChangeTest {
 
	// 使用volatile变量来做判断
	private volatile boolean isChange = true;
 
	// 线程A业务处理,如:存储数据任务
	public synchronized void methodA() throws Exception {
		while (!isChange) {
			// 等待
			wait();
		}
		System.out.println("★★★★★");
		isChange = false;
		// 唤醒线程
		notifyAll();
	}
 
	// 线程B业务处理,如:解析数据任务
	public synchronized void methodB() throws Exception {
		while (isC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyondwild

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值