java进程间通信问题
下面是代码:
按理来说每个对应的num只有一句输出,但是结果却会出现下面这样的情况

有没有好心人能解答一下,我已经知道怎么能得到我想要的结果,只是单纯想知道这是为什么,谢谢。
import java.util.ArrayList;
import java.util.List;
public class FirstThread {
public static void main(String[] args) throws InterruptedException {
List<Object> goods = new ArrayList<>(); //储存物品的仓库,最多储存1
Thread thread1 = new Thread(()->{ //线程1,生产产品
int num = 0;
while(true) {
synchronized (goods) {
if(goods.size()==0) goods.add("商品" + ++num);
else if(goods.size()>0)
try {
goods.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("生产者生产了第"+num+"个产品");
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, "生产者");
Thread thread2 = new Thread(()->{
int num = 0;
while(true) {
synchronized (goods) {
if(goods.size()>0) goods.remove("商品"+ ++num);
else if (goods.size()==0)
goods.notify();
System.out.println("消费者消费了第"+num+"个产品");
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, "消费者");
thread1.start();
thread2.start();
}
}按理来说每个对应的num只有一句输出,但是结果却会出现下面这样的情况

有没有好心人能解答一下,我已经知道怎么能得到我想要的结果,只是单纯想知道这是为什么,谢谢。
...全文
相关推荐
Java基于socket的进程间通信 聊天小程序
用java编写的基于socket的进程间通信程序 客户端服务器聊天小程序
详谈java线程与线程、进程与进程间通信
下面小编就为大家带来一篇详谈java线程与线程、进程与进程间通信。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
机器学习项目前(java)后端(python)进程通信问题
问题说明 本篇开门见山,在做机器学习项目时有时会遇到前后端的交互问题。以本地打码平台为例,在模型训练好之后前端是由java写的,模型则是由python完成,前后端的交互实际上就是前后端两个程序所在线程的交互,所以将python所在线程实现ServerSocket,Java线程实现Socket则可实现交互。 Python: import socket import sys import threading import json import numpy as np from train.predict import Predict from utils.to_gray import img_t
android 进程间通信demo
一个简单的进程间通信
AILD进程间通信Demo
AILD进程间通信Demo


