阿里一面上来就让手写一个多线程模型,利用condition来实现1和0的交替执行,着实把我弄懵逼了,凭借着自己微弱的记忆,大致写出了如下:
基本思路是:
1、线程 操作 (方法) 资源类
2、判断 干活 通知
3、利用while判断来防止虚假唤醒机制
第一种方法利用Lock进行加锁解锁:
public class ProducerAndConsumer {
public static void main(String[] args) {
Food food = new Food();
new Thread(()->{
for (int i = 0; i < 100; i++) {
try {
food.produce();
} catch (Exception e) {
e.printStackTrace();
}
}
},"生产者").start();
new Thread(()->{
for (int i = 0; i < 100; i++) {
try {
food.consumer();
} catch (Exception e) {
e.printStackTrace()<