首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

谈谈多个线程顺序交替执行的问题

问题1 基于数组实现一个阻塞队列

问题2 基于数组实现一个循环阻塞队列

问题3 第一个线程循环5次,第二个线程循环10次,第三个线程循环15次,然后又到第一个线程循环5次,如此往返 执行50次。

另外,也可以采用线程池,这让我又明白了线程池的概念。虽然说线程池一般是相同类型的线程,但是也可以是不同类型的线程。

扩展可以使用一个线程实现问题3。

问题4 模拟斗地主抓牌,扑克牌的值为1-54,随机选取地主 并从地主开始按顺序抓牌,剩余3张。要求:用线程模拟 玩家抓牌。

问题5 三个线程顺序打印t1,t2,t3,每个线程打印50次

总结

关于实现队列也好,还是实现多个线程交替顺序输出也罢,都是属于并发和多线程的知识点(比如synchronized、Lock、volatile),最关键的是控制好线程顺序的执行。深入理解等待通知机制。推荐使用ReentrantLock和Condition,如果使用Object类的wait()方法,那么就要配合while循环,使用notifyAll()来唤醒线程。我相信:多练习,多学习,多努力,多积累,多看源码,技术会越来越好的。

参考资料

1 Doug Lea java并发编程实践

2 黄文海 java多线程编程实战指南

3 tracycater博客 https://blog.csdn.net/tracycater/article/details/55211988

4 https://www.hellojava.com/article/10523

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180325G0LGON00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券