场景介绍
1.一个生产者 120个消费者
2.生产者生产目标是100个,到了100个就不生产了;同时生产者在存在可以卖的茶大于5个同时已经生产了大于10个的情况下可以休息,然后等待消费者的唤醒
3.消费者只要有茶叶都可以买,没有茶叶可以唤醒生产者,然后等待生产,除非生产者已经生产了100个而且卖完了,消费者才会推出,打印没有买到
4.生产者和消费者使用同一把锁
代码如下:
public class TestProducerAndConsumer {
//目标只生产100袋茶叶
private static transient int targerTeas = 100;
//已经生产的茶叶袋数
private static transient AtomicInteger produced = new AtomicInteger(0);
//出去卖出的茶叶还剩余的茶叶数量
private static transient AtomicInteger exist = new AtomicInteger(0);
//卖出去多少袋
private static transient AtomicInteger sell = new AtomicInteger(0);
public static void main(String[] args) {
Lock lock = new ReentrantLock();
Condition producer = lock.newCondition();
Condition consumer = lock.newCondition();
//生产者
Runnable producerTask = () -> {
lock.lock();
try {
while (produced.intValue() < targerTeas) {
if (exist.intValue() > 5 && produced.intValue() > 10) {
consumer.signalAll();
producer.await();
}
Thread.sleep(1000L);
produced.incrementAndGet();
exist.incrementAndGet();
System.out.println("====================生产了" + produced.intValue() + "个");
}
System.out.println("已经生产了100个 不卖了 只卖100个!!!!!!!!!!!!!!!!!!!!");
consumer.signalAll();
} catch (Exception e) {
} finally {
lock.unlock();
}
};
//消费者
Runnable consumerTask = () -> {
lock.lock();
try {
while (exist.intValue() <= 0) {
if (produced.intValue() == targerTeas && exist.intValue() <= 0) {
System.out.println("沒有了 今天不卖了" + Thread.currentThread().getName() + "没有买到");
throw new RuntimeException();
}
producer.signal();
consumer.await();
}
exist.decrementAndGet();
sell.incrementAndGet();
System.out.println(Thread.currentThread().getName() + "买了茶;卖了第" + sell.intValue() + "袋茶叶");
} catch (Exception e) {
} finally {
lock.unlock();
}
};
System.out.println("开始买卖!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
new Thread(producerTask).start();
for (int i = 1; i < 121; i++) {
new Thread(consumerTask, "第" + i + "个买主").start();
}
}
}
执行结果:
"C:\Program Files\Java\jdk1.8.0_231\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:51308,suspend=y,server=n -javaagent:C:\Users\14806\AppData\Local\JetBrains\IntelliJIdea2021.2\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_231\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_231\jre\lib\rt.jar;D:\work\code\auth\target\classes;D:\work\repository\org\springframework\cloud\spring-cloud-openfeign-core\2.2.5.RELEASE\spring-cloud-openfeign-core-2.2.5.RELEASE.jar;D:\work\repository\org\springframework\boot\spring-boot-autoconfigure\2.2.3.RELEASE\spring-boot-autoconfigure-2.2.3.RELEASE.jar;D:\work\repository\org\springframework\boot\spring-boot\2.2.3.RELEASE\spring-boot-2.2.3.RELEASE.jar;D:\work\repository\org\springframework\cloud\spring-cloud-netflix-ribbon\2.2.5.RELEASE\spring-cloud-netflix-ribbon-2.2.5.RELEASE.jar;D:\work\repository\org\springframework\cloud\spring-cloud-netflix-archaius\2.2.5.RELEASE\spring-cloud-netflix-archaius-2.2.5.RELEASE.jar;D:\work\repository\io\github\openfeign\form\feign-form-spring\3.8.0\feign-form-spring-3.8.0.jar;D:\work\repository\io\github\openfeign\form\feign-form\3.8.0\feign-form-3.8.0.jar;D:\work\repository\commons-fileupload\commons-fileupload\1.4\commons-fileupload-1.4.jar;D:\work\repository\commons-io\commons-io\2.2\commons-io-2.2.jar;D:\work\repository\org\springframework\cloud\spring-cloud-starter-openfeign\2.2.5.RELEASE\spring-cloud-starter-openfeign-2.2.5.RELEASE.jar;D:\work\repository\org\springframework\cloud\spring-cloud-starter\2.2.5.RELEASE\spring-cloud-starter-2.2.5.RELEASE.jar;D:\work\repository\org\springframework\security\spring-security-rsa\1.0.9.RELEASE\spring-security-rsa-1.0.9.RELEASE.jar;D:\work\repository\org\bouncycastle\bcpkix-jdk15on\1.64\bcpkix-jdk15on-1.64.jar;D:\work\repository\org\bouncycastle\bcprov-jdk15on\1.64\bcprov-jdk15on-1.64.jar;D:\work\repository\org\springframework\spring-web\5.2.3.RELEASE\spring-web-5.2.3.RELEASE.jar;D:\work\repository\org\springframework\spring-beans\5.2.3.RELEASE\spring-beans-5.2.3.RELEASE.jar;D:\work\repository\org\springframework\spring-core\5.2.3.RELEASE\spring-core-5.2.3.RELEASE.jar;D:\work\repository\org\springframework\spring-jcl\5.2.3.RELEASE\spring-jcl-5.2.3.RELEASE.jar;D:\work\repository\org\springframework\cloud\spring-cloud-commons\2.2.5.RELEASE\spring-cloud-commons-2.2.5.RELEASE.jar;D:\work\repository\org\springframework\security\spring-security-crypto\5.2.1.RELEASE\spring-security-crypto-5.2.1.RELEASE.jar;D:\work\repository\io\github\openfeign\feign-core\10.10.1\feign-core-10.10.1.jar;D:\work\repository\io\github\openfeign\feign-slf4j\10.10.1\feign-slf4j-10.10.1.jar;D:\work\repository\io\github\openfeign\feign-hystrix\10.10.1\feign-hystrix-10.10.1.jar;D:\work\repository\com\netflix\archaius\archaius-core\0.7.6\archaius-core-0.7.6.jar;D:\work\repository\com\google\code\findbugs\jsr305\3.0.1\jsr305-3.0.1.jar;D:\work\repository\commons-configuration\commons-configuration\1.8\commons-configuration-1.8.jar;D:\work\repository\com\netflix\hystrix\hystrix-core\1.5.18\hystrix-core-1.5.18.jar;D:\work\repository\org\springframework\boot\spring-boot-starter-web\2.2.3.RELEASE\spring-boot-starter-web-2.2.3.RELEASE.jar;D:\work\repository\org\springframework\boot\spring-boot-starter\2.2.3.RELEASE\spring-boot-starter-2.2.3.RELEASE.jar;D:\work\repository\org\springframework\boot\spring-boot-starter-logging\2.2.3.RELEASE\spring-boot-starter-logging-2.2.3.RELEASE.jar;D:\work\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\work\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\work\repository\org\apache\logging\log4j\log4j-to-slf4j\2.12.1\log4j-to-slf4j-2.12.1.jar;D:\work\repository\org\apache\logging\log4j\log4j-api\2.12.1\log4j-api-2.12.1.jar;D:\work\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;D:\work\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\work\repository\org\yaml\snakeyaml\1.25\snakeyaml-1.25.jar;D:\work\repository\org\springframework\boot\spring-boot-starter-json\2.2.3.RELEASE\spring-boot-starter-json-2.2.3.RELEASE.jar;D:\work\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.10.2\jackson-datatype-jdk8-2.10.2.jar;D:\work\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.10.2\jackson-datatype-jsr310-2.10.2.jar;D:\work\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.10.2\jackson-module-parameter-names-2.10.2.jar;D:\work\repository\org\springframework\boot\spring-boot-starter-tomcat\2.2.3.RELEASE\spring-boot-starter-tomcat-2.2.3.RELEASE.jar;D:\work\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.30\tomcat-embed-core-9.0.30.jar;D:\work\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.30\tomcat-embed-el-9.0.30.jar;D:\work\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.30\tomcat-embed-websocket-9.0.30.jar;D:\work\repository\org\springframework\boot\spring-boot-starter-validation\2.2.3.RELEASE\spring-boot-starter-validation-2.2.3.RELEASE.jar;D:\work\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;D:\work\repository\org\hibernate\validator\hibernate-validator\6.0.18.Final\hibernate-validator-6.0.18.Final.jar;D:\work\repository\org\jboss\logging\jboss-logging\3.4.1.Final\jboss-logging-3.4.1.Final.jar;D:\work\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;D:\work\repository\org\springframework\spring-webmvc\5.2.3.RELEASE\spring-webmvc-5.2.3.RELEASE.jar;D:\work\repository\org\springframework\spring-context\5.2.3.RELEASE\spring-context-5.2.3.RELEASE.jar;D:\work\repository\org\springframework\spring-expression\5.2.3.RELEASE\spring-expression-5.2.3.RELEASE.jar;D:\work\repository\org\springframework\boot\spring-boot-starter-actuator\2.2.3.RELEASE\spring-boot-starter-actuator-2.2.3.RELEASE.jar;D:\work\repository\org\springframework\boot\spring-boot-actuator-autoconfigure\2.2.3.RELEASE\spring-boot-actuator-autoconfigure-2.2.3.RELEASE.jar;D:\work\repository\org\springframework\boot\spring-boot-actuator\2.2.3.RELEASE\spring-boot-actuator-2.2.3.RELEASE.jar;D:\work\repository\io\micrometer\micrometer-core\1.3.2\micrometer-core-1.3.2.jar;D:\work\repository\org\hdrhistogram\HdrHistogram\2.1.11\HdrHistogram-2.1.11.jar;D:\work\repository\org\latencyutils\LatencyUtils\2.0.3\LatencyUtils-2.0.3.jar;D:\work\repository\com\alibaba\cloud\spring-cloud-starter-alibaba-nacos-discovery\2.2.3.RELEASE\spring-cloud-starter-alibaba-nacos-discovery-2.2.3.RELEASE.jar;D:\work\repository\com\alibaba\nacos\nacos-client\1.3.3\nacos-client-1.3.3.jar;D:\work\repository\com\alibaba\nacos\nacos-common\1.3.3\nacos-common-1.3.3.jar;D:\work\repository\org\apache\httpcomponents\httpasyncclient\4.1.4\httpasyncclient-4.1.4.jar;D:\work\repository\org\apache\httpcomponents\httpcore\4.4.13\httpcore-4.4.13.jar;D:\work\repository\org\apache\httpcomponents\httpcore-nio\4.4.13\httpcore-nio-4.4.13.jar;D:\work\repository\com\alibaba\nacos\nacos-api\1.3.3\nacos-api-1.3.3.jar;D:\work\repository\org\apache\commons\commons-lang3\3.9\commons-lang3-3.9.jar;D:\work\repository\com\google\guava\guava\29.0-jre\guava-29.0-jre.jar;D:\work\repository\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar;D:\work\repository\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;D:\work\repository\org\checkerframework\checker-qual\2.11.1\checker-qual-2.11.1.jar;D:\work\repository\com\google\errorprone\error_prone_annotations\2.3.4\error_prone_annotations-2.3.4.jar;D:\work\repository\com\google\j2objc\j2objc-annotations\1.3\j2objc-annotations-1.3.jar;D:\work\repository\commons-codec\commons-codec\1.13\commons-codec-1.13.jar;D:\work\repository\io\prometheus\simpleclient\0.5.0\simpleclient-0.5.0.jar;D:\work\repository\com\alibaba\spring\spring-context-support\1.0.10\spring-context-support-1.0.10.jar;D:\work\repository\org\springframework\cloud\spring-cloud-context\2.2.5.RELEASE\spring-cloud-context-2.2.5.RELEASE.jar;D:\work\repository\org\springframework\cloud\spring-cloud-starter-netflix-ribbon\2.2.5.RELEASE\spring-cloud-starter-netflix-ribbon-2.2.5.RELEASE.jar;D:\work\repository\org\springframework\cloud\spring-cloud-starter-netflix-archaius\2.2.5.RELEASE\spring-cloud-starter-netflix-archaius-2.2.5.RELEASE.jar;D:\work\repository\com\netflix\ribbon\ribbon\2.3.0\ribbon-2.3.0.jar;D:\work\repository\com\netflix\ribbon\ribbon-transport\2.3.0\ribbon-transport-2.3.0.jar;D:\work\repository\io\reactivex\rxnetty-contexts\0.4.9\rxnetty-contexts-0.4.9.jar;D:\work\repository\io\reactivex\rxnetty-servo\0.4.9\rxnetty-servo-0.4.9.jar;D:\work\repository\javax\inject\javax.inject\1\javax.inject-1.jar;D:\work\repository\io\reactivex\rxnetty\0.4.9\rxnetty-0.4.9.jar;D:\work\repository\com\netflix\ribbon\ribbon-core\2.3.0\ribbon-core-2.3.0.jar;D:\work\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\work\repository\com\netflix\ribbon\ribbon-httpclient\2.3.0\ribbon-httpclient-2.3.0.jar;D:\work\repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;D:\work\repository\org\apache\httpcomponents\httpclient\4.5.10\httpclient-4.5.10.jar;D:\work\repository\com\sun\jersey\jersey-client\1.19.1\jersey-client-1.19.1.jar;D:\work\repository\com\sun\jersey\jersey-core\1.19.1\jersey-core-1.19.1.jar;D:\work\repository\javax\ws\rs\jsr311-api\1.1.1\jsr311-api-1.1.1.jar;D:\work\repository\com\sun\jersey\contribs\jersey-apache-client4\1.19.1\jersey-apache-client4-1.19.1.jar;D:\work\repository\com\netflix\servo\servo-core\0.12.21\servo-core-0.12.21.jar;D:\work\repository\com\netflix\netflix-commons\netflix-commons-util\0.3.0\netflix-commons-util-0.3.0.jar;D:\work\repository\com\netflix\ribbon\ribbon-loadbalancer\2.3.0\ribbon-loadbalancer-2.3.0.jar;D:\work\repository\com\netflix\netflix-commons\netflix-statistics\0.1.1\netflix-statistics-0.1.1.jar;D:\work\repository\io\reactivex\rxjava\1.3.8\rxjava-1.3.8.jar;D:\work\repository\com\alibaba\cloud\spring-cloud-starter-alibaba-nacos-config\2.2.3.RELEASE\spring-cloud-starter-alibaba-nacos-config-2.2.3.RELEASE.jar;D:\work\repository\org\projectlombok\lombok\1.18.10\lombok-1.18.10.jar;D:\work\repository\org\springframework\boot\spring-boot-starter-jdbc\2.2.3.RELEASE\spring-boot-starter-jdbc-2.2.3.RELEASE.jar;D:\work\repository\com\zaxxer\HikariCP\3.4.2\HikariCP-3.4.2.jar;D:\work\repository\org\springframework\spring-jdbc\5.2.3.RELEASE\spring-jdbc-5.2.3.RELEASE.jar;D:\work\repository\org\springframework\spring-tx\5.2.3.RELEASE\spring-tx-5.2.3.RELEASE.jar;D:\work\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\1.3.2\mybatis-spring-boot-starter-1.3.2.jar;D:\work\repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\1.3.2\mybatis-spring-boot-autoconfigure-1.3.2.jar;D:\work\repository\org\mybatis\mybatis\3.4.6\mybatis-3.4.6.jar;D:\work\repository\org\mybatis\mybatis-spring\1.3.2\mybatis-spring-1.3.2.jar;D:\work\repository\mysql\mysql-connector-java\8.0.19\mysql-connector-java-8.0.19.jar;D:\work\repository\org\springframework\boot\spring-boot-starter-data-redis\2.2.3.RELEASE\spring-boot-starter-data-redis-2.2.3.RELEASE.jar;D:\work\repository\org\springframework\data\spring-data-redis\2.2.4.RELEASE\spring-data-redis-2.2.4.RELEASE.jar;D:\work\repository\org\springframework\data\spring-data-keyvalue\2.2.4.RELEASE\spring-data-keyvalue-2.2.4.RELEASE.jar;D:\work\repository\org\springframework\spring-oxm\5.2.3.RELEASE\spring-oxm-5.2.3.RELEASE.jar;D:\work\repository\org\springframework\spring-context-support\5.2.3.RELEASE\spring-context-support-5.2.3.RELEASE.jar;D:\work\repository\io\lettuce\lettuce-core\5.2.1.RELEASE\lettuce-core-5.2.1.RELEASE.jar;D:\work\repository\io\netty\netty-common\4.1.45.Final\netty-common-4.1.45.Final.jar;D:\work\repository\io\netty\netty-handler\4.1.45.Final\netty-handler-4.1.45.Final.jar;D:\work\repository\io\netty\netty-buffer\4.1.45.Final\netty-buffer-4.1.45.Final.jar;D:\work\repository\io\netty\netty-codec\4.1.45.Final\netty-codec-4.1.45.Final.jar;D:\work\repository\io\netty\netty-transport\4.1.45.Final\netty-transport-4.1.45.Final.jar;D:\work\repository\io\netty\netty-resolver\4.1.45.Final\netty-resolver-4.1.45.Final.jar;D:\work\repository\io\projectreactor\reactor-core\3.3.2.RELEASE\reactor-core-3.3.2.RELEASE.jar;D:\work\repository\org\reactivestreams\reactive-streams\1.0.3\reactive-streams-1.0.3.jar;D:\work\repository\org\springframework\boot\spring-boot-starter-data-mongodb\2.2.3.RELEASE\spring-boot-starter-data-mongodb-2.2.3.RELEASE.jar;D:\work\repository\org\mongodb\mongodb-driver\3.11.2\mongodb-driver-3.11.2.jar;D:\work\repository\org\mongodb\bson\3.11.2\bson-3.11.2.jar;D:\work\repository\org\mongodb\mongodb-driver-core\3.11.2\mongodb-driver-core-3.11.2.jar;D:\work\repository\org\springframework\data\spring-data-mongodb\2.2.4.RELEASE\spring-data-mongodb-2.2.4.RELEASE.jar;D:\work\repository\org\springframework\data\spring-data-commons\2.2.4.RELEASE\spring-data-commons-2.2.4.RELEASE.jar;D:\work\repository\org\apache\shiro\shiro-spring\1.3.2\shiro-spring-1.3.2.jar;D:\work\repository\org\apache\shiro\shiro-core\1.3.2\shiro-core-1.3.2.jar;D:\work\repository\commons-beanutils\commons-beanutils\1.8.3\commons-beanutils-1.8.3.jar;D:\work\repository\org\apache\shiro\shiro-web\1.3.2\shiro-web-1.3.2.jar;D:\work\repository\com\xuxueli\xxl-job-core\2.3.0\xxl-job-core-2.3.0.jar;D:\work\repository\io\netty\netty-all\4.1.45.Final\netty-all-4.1.45.Final.jar;D:\work\repository\com\google\code\gson\gson\2.8.6\gson-2.8.6.jar;D:\work\repository\org\codehaus\groovy\groovy\2.5.9\groovy-2.5.9.jar;D:\work\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;D:\work\repository\org\springframework\boot\spring-boot-starter-aop\2.2.3.RELEASE\spring-boot-starter-aop-2.2.3.RELEASE.jar;D:\work\repository\org\springframework\spring-aop\5.2.3.RELEASE\spring-aop-5.2.3.RELEASE.jar;D:\work\repository\org\aspectj\aspectjweaver\1.9.5\aspectjweaver-1.9.5.jar;D:\work\repository\com\alibaba\cloud\spring-cloud-starter-alibaba-sentinel\2.1.1.RELEASE\spring-cloud-starter-alibaba-sentinel-2.1.1.RELEASE.jar;D:\work\repository\com\alibaba\cloud\spring-cloud-alibaba-sentinel\2.1.1.RELEASE\spring-cloud-alibaba-sentinel-2.1.1.RELEASE.jar;D:\work\repository\com\alibaba\csp\sentinel-transport-simple-http\1.8.0\sentinel-transport-simple-http-1.8.0.jar;D:\work\repository\com\alibaba\csp\sentinel-transport-common\1.8.0\sentinel-transport-common-1.8.0.jar;D:\work\repository\com\alibaba\csp\sentinel-datasource-extension\1.8.0\sentinel-datasource-extension-1.8.0.jar;D:\work\repository\com\alibaba\fastjson\1.2.71\fastjson-1.2.71.jar;D:\work\repository\com\alibaba\csp\sentinel-annotation-aspectj\1.8.0\sentinel-annotation-aspectj-1.8.0.jar;D:\work\repository\com\alibaba\csp\sentinel-core\1.8.0\sentinel-core-1.8.0.jar;D:\work\repository\org\aspectj\aspectjrt\1.9.5\aspectjrt-1.9.5.jar;D:\work\repository\com\alibaba\csp\sentinel-web-servlet\1.8.0\sentinel-web-servlet-1.8.0.jar;D:\work\repository\com\alibaba\csp\sentinel-spring-webflux-adapter\1.8.0\sentinel-spring-webflux-adapter-1.8.0.jar;D:\work\repository\com\alibaba\csp\sentinel-reactor-adapter\1.8.0\sentinel-reactor-adapter-1.8.0.jar;D:\work\repository\com\alibaba\csp\sentinel-parameter-flow-control\1.8.0\sentinel-parameter-flow-control-1.8.0.jar;D:\work\repository\com\googlecode\concurrentlinkedhashmap\concurrentlinkedhashmap-lru\1.4.2\concurrentlinkedhashmap-lru-1.4.2.jar;D:\work\repository\com\alibaba\csp\sentinel-cluster-server-default\1.8.0\sentinel-cluster-server-default-1.8.0.jar;D:\work\repository\com\alibaba\csp\sentinel-cluster-common-default\1.8.0\sentinel-cluster-common-default-1.8.0.jar;D:\work\repository\com\alibaba\csp\sentinel-cluster-client-default\1.8.0\sentinel-cluster-client-default-1.8.0.jar;D:\work\repository\com\alibaba\cloud\spring-cloud-alibaba-sentinel-datasource\2.2.3.RELEASE\spring-cloud-alibaba-sentinel-datasource-2.2.3.RELEASE.jar;D:\work\repository\com\fasterxml\jackson\core\jackson-core\2.10.0\jackson-core-2.10.0.jar;D:\work\repository\com\fasterxml\jackson\core\jackson-databind\2.10.0\jackson-databind-2.10.0.jar;D:\work\repository\com\fasterxml\jackson\core\jackson-annotations\2.10.2\jackson-annotations-2.10.2.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2021.2.3\lib\idea_rt.jar" com.myzy.auth.reetrantlock.TestProducerAndConsumer
Connected to the target VM, address: '127.0.0.1:51308', transport: 'socket'
开始买卖!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
========================================================================
====================生产了1个
====================生产了2个
====================生产了3个
====================生产了4个
====================生产了5个
====================生产了6个
====================生产了7个
====================生产了8个
====================生产了9个
====================生产了10个
====================生产了11个
第2个买主买了茶;卖了第1袋茶叶
第1个买主买了茶;卖了第2袋茶叶
第3个买主买了茶;卖了第3袋茶叶
第4个买主买了茶;卖了第4袋茶叶
第5个买主买了茶;卖了第5袋茶叶
第6个买主买了茶;卖了第6袋茶叶
第7个买主买了茶;卖了第7袋茶叶
第8个买主买了茶;卖了第8袋茶叶
第9个买主买了茶;卖了第9袋茶叶
第10个买主买了茶;卖了第10袋茶叶
第11个买主买了茶;卖了第11袋茶叶
====================生产了12个
====================生产了13个
====================生产了14个
====================生产了15个
====================生产了16个
====================生产了17个
第12个买主买了茶;卖了第12袋茶叶
第13个买主买了茶;卖了第13袋茶叶
第14个买主买了茶;卖了第14袋茶叶
第15个买主买了茶;卖了第15袋茶叶
第16个买主买了茶;卖了第16袋茶叶
第17个买主买了茶;卖了第17袋茶叶
====================生产了18个
====================生产了19个
====================生产了20个
====================生产了21个
====================生产了22个
====================生产了23个
第18个买主买了茶;卖了第18袋茶叶
第19个买主买了茶;卖了第19袋茶叶
第20个买主买了茶;卖了第20袋茶叶
第21个买主买了茶;卖了第21袋茶叶
第22个买主买了茶;卖了第22袋茶叶
第23个买主买了茶;卖了第23袋茶叶
====================生产了24个
====================生产了25个
====================生产了26个
====================生产了27个
====================生产了28个
====================生产了29个
第24个买主买了茶;卖了第24袋茶叶
第25个买主买了茶;卖了第25袋茶叶
第26个买主买了茶;卖了第26袋茶叶
第27个买主买了茶;卖了第27袋茶叶
第28个买主买了茶;卖了第28袋茶叶
第29个买主买了茶;卖了第29袋茶叶
====================生产了30个
====================生产了31个
====================生产了32个
====================生产了33个
====================生产了34个
====================生产了35个
第30个买主买了茶;卖了第30袋茶叶
第31个买主买了茶;卖了第31袋茶叶
第32个买主买了茶;卖了第32袋茶叶
第33个买主买了茶;卖了第33袋茶叶
第34个买主买了茶;卖了第34袋茶叶
第35个买主买了茶;卖了第35袋茶叶
====================生产了36个
====================生产了37个
====================生产了38个
====================生产了39个
====================生产了40个
====================生产了41个
第36个买主买了茶;卖了第36袋茶叶
第37个买主买了茶;卖了第37袋茶叶
第38个买主买了茶;卖了第38袋茶叶
第40个买主买了茶;卖了第39袋茶叶
第39个买主买了茶;卖了第40袋茶叶
第41个买主买了茶;卖了第41袋茶叶
====================生产了42个
====================生产了43个
====================生产了44个
====================生产了45个
====================生产了46个
====================生产了47个
第42个买主买了茶;卖了第42袋茶叶
第43个买主买了茶;卖了第43袋茶叶
第44个买主买了茶;卖了第44袋茶叶
第45个买主买了茶;卖了第45袋茶叶
第46个买主买了茶;卖了第46袋茶叶
第47个买主买了茶;卖了第47袋茶叶
====================生产了48个
====================生产了49个
====================生产了50个
====================生产了51个
====================生产了52个
====================生产了53个
第48个买主买了茶;卖了第48袋茶叶
第49个买主买了茶;卖了第49袋茶叶
第50个买主买了茶;卖了第50袋茶叶
第52个买主买了茶;卖了第51袋茶叶
第53个买主买了茶;卖了第52袋茶叶
第51个买主买了茶;卖了第53袋茶叶
====================生产了54个
====================生产了55个
====================生产了56个
====================生产了57个
====================生产了58个
====================生产了59个
第54个买主买了茶;卖了第54袋茶叶
第55个买主买了茶;卖了第55袋茶叶
第56个买主买了茶;卖了第56袋茶叶
第57个买主买了茶;卖了第57袋茶叶
第58个买主买了茶;卖了第58袋茶叶
第61个买主买了茶;卖了第59袋茶叶
====================生产了60个
====================生产了61个
====================生产了62个
====================生产了63个
====================生产了64个
====================生产了65个
第60个买主买了茶;卖了第60袋茶叶
第59个买主买了茶;卖了第61袋茶叶
第62个买主买了茶;卖了第62袋茶叶
第63个买主买了茶;卖了第63袋茶叶
第64个买主买了茶;卖了第64袋茶叶
第65个买主买了茶;卖了第65袋茶叶
====================生产了66个
====================生产了67个
====================生产了68个
====================生产了69个
====================生产了70个
====================生产了71个
第68个买主买了茶;卖了第66袋茶叶
第67个买主买了茶;卖了第67袋茶叶
第66个买主买了茶;卖了第68袋茶叶
第69个买主买了茶;卖了第69袋茶叶
第71个买主买了茶;卖了第70袋茶叶
第70个买主买了茶;卖了第71袋茶叶
====================生产了72个
====================生产了73个
====================生产了74个
====================生产了75个
====================生产了76个
====================生产了77个
第73个买主买了茶;卖了第72袋茶叶
第72个买主买了茶;卖了第73袋茶叶
第74个买主买了茶;卖了第74袋茶叶
第75个买主买了茶;卖了第75袋茶叶
第76个买主买了茶;卖了第76袋茶叶
第77个买主买了茶;卖了第77袋茶叶
====================生产了78个
====================生产了79个
====================生产了80个
====================生产了81个
====================生产了82个
====================生产了83个
第78个买主买了茶;卖了第78袋茶叶
第79个买主买了茶;卖了第79袋茶叶
第80个买主买了茶;卖了第80袋茶叶
第81个买主买了茶;卖了第81袋茶叶
第82个买主买了茶;卖了第82袋茶叶
第83个买主买了茶;卖了第83袋茶叶
====================生产了84个
====================生产了85个
====================生产了86个
====================生产了87个
====================生产了88个
====================生产了89个
第84个买主买了茶;卖了第84袋茶叶
第85个买主买了茶;卖了第85袋茶叶
第86个买主买了茶;卖了第86袋茶叶
第87个买主买了茶;卖了第87袋茶叶
第88个买主买了茶;卖了第88袋茶叶
第89个买主买了茶;卖了第89袋茶叶
====================生产了90个
====================生产了91个
====================生产了92个
====================生产了93个
====================生产了94个
====================生产了95个
第90个买主买了茶;卖了第90袋茶叶
第91个买主买了茶;卖了第91袋茶叶
第92个买主买了茶;卖了第92袋茶叶
第93个买主买了茶;卖了第93袋茶叶
第94个买主买了茶;卖了第94袋茶叶
第95个买主买了茶;卖了第95袋茶叶
====================生产了96个
====================生产了97个
====================生产了98个
====================生产了99个
====================生产了100个
已经生产了100个 不卖了 只卖100个!!!!!!!!!!!!!!!!!!!!
第96个买主买了茶;卖了第96袋茶叶
第97个买主买了茶;卖了第97袋茶叶
第98个买主买了茶;卖了第98袋茶叶
第99个买主买了茶;卖了第99袋茶叶
第100个买主买了茶;卖了第100袋茶叶
沒有了 今天不卖了第101个买主没有买到
沒有了 今天不卖了第102个买主没有买到
沒有了 今天不卖了第103个买主没有买到
沒有了 今天不卖了第104个买主没有买到
沒有了 今天不卖了第105个买主没有买到
沒有了 今天不卖了第106个买主没有买到
沒有了 今天不卖了第107个买主没有买到
沒有了 今天不卖了第108个买主没有买到
沒有了 今天不卖了第109个买主没有买到
沒有了 今天不卖了第110个买主没有买到
沒有了 今天不卖了第111个买主没有买到
沒有了 今天不卖了第112个买主没有买到
沒有了 今天不卖了第114个买主没有买到
沒有了 今天不卖了第113个买主没有买到
沒有了 今天不卖了第115个买主没有买到
沒有了 今天不卖了第116个买主没有买到
沒有了 今天不卖了第117个买主没有买到
沒有了 今天不卖了第118个买主没有买到
沒有了 今天不卖了第119个买主没有买到
沒有了 今天不卖了第120个买主没有买到
Disconnected from the target VM, address: '127.0.0.1:51308', transport: 'socket'
Process finished with exit code 0
看执行结果应该是没有问题的,如果有问题希望和大家一起讨论,本人也在学习中,有错误希望指正,感谢!!!!!!!!!!!!!!!
本文暂时没有评论,来添加一个吧(●'◡'●)