目录
信号量
生产者
消费者
单元测试
Java信号量测试
定义一个信号量对象,同时定义生产者和消费者,让生产者和消费者互相等待。生产者每次生产一个对象放入队列,通知消费者消费;消费者每次只消费一个队列对象数据,消费完再通知生产者生产。
信号量
信号量就是一个能够进入消费和生产的标志。
public class Signal {
public static final int times = 100;
public static AtomicInteger signal = new AtomicInteger(0);
public static linkedBlockingDeque queue = new linkedBlockingDeque();
}
生产者
@Data
@Slf4j
public class Producer implements Runnable{
public Producer() {
}
int count = 0;
@Override
public void run() {
while (count < Signal.times){
// 生产条件
if(Signal.signal.get() >= 0 && Signal.queue.size() == 0){
try {
synchronized (Signal.signal){
// P操作-1
log.info("生产者: P操作 -1 ");
Signal.signal.incrementAndGet();
log.info("生产者: 生产,放入一个对象");
Signal.queue.add(new Object());
count ++;
// V操作+1
log.info("生产者: V操作 +1 ");
Signal.signal.decrementAndGet();
log.info("生产者: 通知消费者,生产者阻塞");
Signal.signal.notifyAll();
// 阻塞
Signal.signal.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}else{
// 等待
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
消费者
@Data
@Slf4j
public class Consumer implements Runnable{
int count = 0;
public Consumer() {
}
@Override
public void run() {
while (count < Signal.times){
// 生产条件
if(Signal.signal.get() <= 0 && Signal.queue.size() > 0){
try {
synchronized (Signal.signal){
// P操作-1
log.info("消费者: P操作 -1 ");
Signal.signal.decrementAndGet();
log.info("消费者: 消费,拿走一个对象");
Signal.queue.poll();
count ++;
// V操作+1
log.info("消费者: V操作 +1 ");
Signal.signal.incrementAndGet();
log.info("消费者: 通知生产者,消费者阻塞");
Signal.signal.notifyAll();
// 阻塞
Signal.signal.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}else{
// 等待
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
单元测试
@Slf4j
public class PVTests {
@Test
public void test(){
Producer producer = new Producer();
Consumer consumer = new Consumer();
new Thread(producer).start();
new Thread(consumer).start();
try {
Thread.sleep(10000);
log.info("producer: count = {}",producer.getCount());
log.info("consumer:count = {}",consumer.getCount());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Data
@Slf4j
public class Consumer implements Runnable{
int count = 0;
public Consumer() {
}
@Override
public void run() {
while (count < Signal.times){
// 生产条件
if(Signal.signal.get() <= 0 && Signal.queue.size() > 0){
try {
synchronized (Signal.signal){
// P操作-1
log.info("消费者: P操作 -1 ");
Signal.signal.decrementAndGet();
log.info("消费者: 消费,拿走一个对象");
Signal.queue.poll();
count ++;
// V操作+1
log.info("消费者: V操作 +1 ");
Signal.signal.incrementAndGet();
log.info("消费者: 通知生产者,消费者阻塞");
Signal.signal.notifyAll();
// 阻塞
Signal.signal.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}else{
// 等待
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
单元测试
@Slf4j
public class PVTests {
@Test
public void test(){
Producer producer = new Producer();
Consumer consumer = new Consumer();
new Thread(producer).start();
new Thread(consumer).start();
try {
Thread.sleep(10000);
log.info("producer: count = {}",producer.getCount());
log.info("consumer:count = {}",consumer.getCount());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
输出结果:
"C:Program FilesJavajdk1.8.0_291binjava.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:63700,suspend=y,server=n -ea -Didea.test.cyclic.buffer.size=1048576 -javaagent:C:UsersboonyaAppDataLocalJetBrainsIntelliJIdea2021.2captureAgentdebugger-agent.jar -Dfile.encoding=UTF-8 -classpath "E:Program FilesJetBrainsIntelliJ IDEA 2021.2.3libidea_rt.jar;E:Program FilesJetBrainsIntelliJ IDEA 2021.2.3pluginsjunitlibjunit5-rt.jar;E:Program FilesJetBrainsIntelliJ IDEA 2021.2.3pluginsjunitlibjunit-rt.jar;C:Program FilesJavajdk1.8.0_291jrelibcharsets.jar;C:Program FilesJavajdk1.8.0_291jrelibdeploy.jar;C:Program FilesJavajdk1.8.0_291jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.8.0_291jrelibextcldrdata.jar;C:Program FilesJavajdk1.8.0_291jrelibextdnsns.jar;C:Program FilesJavajdk1.8.0_291jrelibextjaccess.jar;C:Program FilesJavajdk1.8.0_291jrelibextjfxrt.jar;C:Program FilesJavajdk1.8.0_291jrelibextlocaledata.jar;C:Program FilesJavajdk1.8.0_291jrelibextnashorn.jar;C:Program FilesJavajdk1.8.0_291jrelibextsunec.jar;C:Program FilesJavajdk1.8.0_291jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.8.0_291jrelibextsunmscapi.jar;C:Program FilesJavajdk1.8.0_291jrelibextsunpkcs11.jar;C:Program FilesJavajdk1.8.0_291jrelibextzipfs.jar;C:Program FilesJavajdk1.8.0_291jrelibjavaws.jar;C:Program FilesJavajdk1.8.0_291jrelibjce.jar;C:Program FilesJavajdk1.8.0_291jrelibjfr.jar;C:Program FilesJavajdk1.8.0_291jrelibjfxswt.jar;C:Program FilesJavajdk1.8.0_291jrelibjsse.jar;C:Program FilesJavajdk1.8.0_291jrelibmanagement-agent.jar;C:Program FilesJavajdk1.8.0_291jrelibplugin.jar;C:Program FilesJavajdk1.8.0_291jrelibresources.jar;C:Program FilesJavajdk1.8.0_291jrelibrt.jar;F:lwjCodetesttargettest-classes;F:lwjCodetesttargetclasses;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkbootspring-boot-starter-web2.3.5.RELEASEspring-boot-starter-web-2.3.5.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkbootspring-boot-starter2.3.5.RELEASEspring-boot-starter-2.3.5.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkbootspring-boot2.3.5.RELEASEspring-boot-2.3.5.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkbootspring-boot-autoconfigure2.3.5.RELEASEspring-boot-autoconfigure-2.3.5.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkbootspring-boot-starter-logging2.3.5.RELEASEspring-boot-starter-logging-2.3.5.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorychqoslogbacklogback-classic1.2.3logback-classic-1.2.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorychqoslogbacklogback-core1.2.3logback-core-1.2.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgapachelogginglog4jlog4j-to-slf4j2.13.3log4j-to-slf4j-2.13.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgapachelogginglog4jlog4j-api2.13.3log4j-api-2.13.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgslf4jjul-to-slf4j1.7.30jul-to-slf4j-1.7.30.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryjakartaannotationjakarta.annotation-api1.3.5jakarta.annotation-api-1.3.5.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgyamlsnakeyaml1.26snakeyaml-1.26.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkbootspring-boot-starter-json2.3.5.RELEASEspring-boot-starter-json-2.3.5.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorycomfasterxmljacksoncorejackson-databind2.11.3jackson-databind-2.11.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorycomfasterxmljacksoncorejackson-annotations2.11.3jackson-annotations-2.11.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorycomfasterxmljacksoncorejackson-core2.11.3jackson-core-2.11.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorycomfasterxmljacksondatatypejackson-datatype-jdk82.11.3jackson-datatype-jdk8-2.11.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorycomfasterxmljacksondatatypejackson-datatype-jsr3102.11.3jackson-datatype-jsr310-2.11.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorycomfasterxmljacksonmodulejackson-module-parameter-names2.11.3jackson-module-parameter-names-2.11.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkbootspring-boot-starter-tomcat2.3.5.RELEASEspring-boot-starter-tomcat-2.3.5.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgapachetomcatembedtomcat-embed-core9.0.39tomcat-embed-core-9.0.39.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgglassfishjakarta.el3.0.3jakarta.el-3.0.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgapachetomcatembedtomcat-embed-websocket9.0.39tomcat-embed-websocket-9.0.39.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkspring-web5.2.10.RELEASEspring-web-5.2.10.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkspring-beans5.2.10.RELEASEspring-beans-5.2.10.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkspring-webmvc5.2.10.RELEASEspring-webmvc-5.2.10.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkspring-aop5.2.10.RELEASEspring-aop-5.2.10.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkspring-context5.2.10.RELEASEspring-context-5.2.10.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkspring-expression5.2.10.RELEASEspring-expression-5.2.10.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkbootspring-boot-starter-test2.3.5.RELEASEspring-boot-starter-test-2.3.5.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkbootspring-boot-test2.3.5.RELEASEspring-boot-test-2.3.5.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkbootspring-boot-test-autoconfigure2.3.5.RELEASEspring-boot-test-autoconfigure-2.3.5.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorycomjaywayjsonpathjson-path2.4.0json-path-2.4.0.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorynetminidevjson-smart2.3json-smart-2.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorynetminidevaccessors-smart1.2accessors-smart-1.2.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgow2asmasm5.0.4asm-5.0.4.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgslf4jslf4j-api1.7.30slf4j-api-1.7.30.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryjakartaxmlbindjakarta.xml.bind-api2.3.3jakarta.xml.bind-api-2.3.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryjakartaactivationjakarta.activation-api1.2.2jakarta.activation-api-1.2.2.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgassertjassertj-core3.16.1assertj-core-3.16.1.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorghamcresthamcrest2.2hamcrest-2.2.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgjunitjupiterjunit-jupiter5.6.3junit-jupiter-5.6.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgjunitjupiterjunit-jupiter-api5.6.3junit-jupiter-api-5.6.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgopentest4jopentest4j1.2.0opentest4j-1.2.0.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgjunitplatformjunit-platform-commons1.6.3junit-platform-commons-1.6.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgjunitjupiterjunit-jupiter-params5.6.3junit-jupiter-params-5.6.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgjunitjupiterjunit-jupiter-engine5.6.3junit-jupiter-engine-5.6.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgjunitvintagejunit-vintage-engine5.6.3junit-vintage-engine-5.6.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgapiguardianapiguardian-api1.1.0apiguardian-api-1.1.0.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgjunitplatformjunit-platform-engine1.6.3junit-platform-engine-1.6.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryjunitjunit4.13.1junit-4.13.1.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgmockitomockito-core3.3.3mockito-core-3.3.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorynetbytebuddybyte-buddy1.10.17byte-buddy-1.10.17.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorynetbytebuddybyte-buddy-agent1.10.17byte-buddy-agent-1.10.17.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgobjenesisobjenesis2.6objenesis-2.6.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgmockitomockito-junit-jupiter3.3.3mockito-junit-jupiter-3.3.3.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgskyscreamerjsonassert1.5.0jsonassert-1.5.0.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositorycomvaadinexternalgoogleandroid-json .0.20131108.vaadin1android-json-0.0.20131108.vaadin1.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkspring-core5.2.10.RELEASEspring-core-5.2.10.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkspring-jcl5.2.10.RELEASEspring-jcl-5.2.10.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgspringframeworkspring-test5.2.10.RELEASEspring-test-5.2.10.RELEASE.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgxmlunitxmlunit-core2.7.0xmlunit-core-2.7.0.jar;D:DEVELOPERSMAVENapache-maven-3.5.0repositoryorgprojectlomboklombok1.18.22lombok-1.18.22.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 com.example.test.PVTests Connected to the target VM, address: '127.0.0.1:63700', transport: 'socket' 16:14:18.444 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.448 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.448 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.448 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.461 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.461 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.461 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.461 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.461 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.461 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.461 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.461 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.461 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.461 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.461 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.461 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.461 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.461 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.462 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.462 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.463 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.463 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.464 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.464 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.465 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.465 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.466 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.466 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.467 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.467 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.468 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.468 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.468 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.468 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.468 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.468 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.468 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.469 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.469 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.470 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.470 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.471 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.471 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.472 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.472 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.473 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.473 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.474 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.474 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.475 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.475 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.476 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: P操作 -1 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 生产,放入一个对象 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: V操作 +1 16:14:18.477 [Thread-0] INFO com.boonya.code.pv.Producer - 生产者: 通知消费者,生产者阻塞 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: P操作 -1 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 消费,拿走一个对象 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: V操作 +1 16:14:18.477 [Thread-1] INFO com.boonya.code.pv.Consumer - 消费者: 通知生产者,消费者阻塞 16:14:28.445 [main] INFO com.example.test.PVTests - producer: count = 100 16:14:28.447 [main] INFO com.example.test.PVTests - consumer:count = 100 Disconnected from the target VM, address: '127.0.0.1:63700', transport: 'socket' Process finished with exit code 0



