问题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
领取专属 10元无门槛券
私享最新 技术干货