方案1 使用Phaser
方案2 使用CyclicBarrier
package com.eyu.ahxy.module.common.config;
import static com.eyu.ahxy.module.common.config.OneTwoOneTwoTest4.MAX;
import static com.eyu.ahxy.module.common.config.OneTwoOneTwoTest4.NUM;
import static com.eyu.ahxy.module.common.config.OneTwoOneTwoTest4.phaser;
import java.util.concurrent.Phaser;
public class OneTwoOneTwoTest4 {
static int NUM = 0;
static int MAX = 6;
static Object LOCK = new Object();
static Phaser phaser = new Phaser(2);
public static void main(String[] args) throws InterruptedException {
Thread thread1 = new ThreadTest4();
thread1.start();
Thread thread2 = new ThreadTest4();
thread2.start();
thread1.join();
thread2.join();
}
}
class ThreadTest4 extends Thread {
public void run() {
while (true) {
synchronized (phaser) {
NUM = NUM + 1;
System.err.println(NUM + " ====" + Thread.currentThread());
if (NUM >= MAX) {
break;
}
}
phaser.arriveAndAwaitAdvance();
}
};
}
package com.eyu.ahxy.module.common.config;
import static com.eyu.ahxy.module.common.config.OneTwoOneTwoTest5.MAX;
import static com.eyu.ahxy.module.common.config.OneTwoOneTwoTest5.NUM;
import static com.eyu.ahxy.module.common.config.OneTwoOneTwoTest5.cyclicBarrier;
import java.util.concurrent.CyclicBarrier;
public class OneTwoOneTwoTest5 {
static int NUM = 0;
static int MAX = 6;
static CyclicBarrier cyclicBarrier;
public static void main(String[] args) throws InterruptedException {
cyclicBarrier = new CyclicBarrier(2);
Thread thread1 = new ThreadTest5();
thread1.start();
Thread thread2 = new ThreadTest5();
thread2.start();
thread1.join();
thread2.join();
}
}
class ThreadTest5 extends Thread {
public void run() {
while (true) {
synchronized (ThreadTest5.class) {
NUM = NUM + 1;
System.err.println(NUM + " ====" + Thread.currentThread());
if (NUM >= MAX) {
break;
}
}
try {
cyclicBarrier.await();
} catch (Exception e) {
e.printStackTrace();
}
}
};
}
分享到:
相关推荐
批次号转化 自动生成,替代批次号,条码生成辅助
java开发用于给上传文件附上ID,此ID号为日期+xxx,生成形如20131210001 第二天自动从20131211001开发不会重复。有问题可联系我。
JAVA使用线程池查询大批量数据
用java springboot框架实现定时批处理,更新DB字段内容,更新成功后微信短信推送消息给用户
202007批次JAVA程序设计复习大纲答案.pdf
一、定单之间必须存在很好的关联性,方便从销售定单到生产定单到采购定单的追溯,确认各个环节的批号,否则就是空谈。... 五、有批次管理要求的物料,强制要求出库必须与入库的批次对应,不允许负出库的存在。
java代码-使用java解决数据库批处理的源代码 ——学习参考资料:仅用于个人学习使用!
SAP 批次管理设定完整版
Java向数据库中插入大量数据时的优化
File file = new File("C:/Users/admin/Desktop/菜单.xlsx"); InputStream is = new FileInputStream(file); XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); // 获取每一个工作薄 for (int numSheet = 0;...
批次不一致导致物料不能移动 SE38 run RCCLINOBDEL
U8 V10.1存货核算已使用,但中途增加批次管理的方法
(1)了解ERP系统中订单与批次需求计划之间的业务流和信息流。 (2)理解批次需求计划的主要作用与目的。 (3)初步了解主要的基础数据含义及其设置方法。 (4)掌握订单录入、批次需求计划生成的基本方法。 ...
目前java框架中能够生成excel文件的的确不少,但是,能够生成大数据量的excel框架,我倒是没发现,一般数据量大了都会出现内存溢出,所以,生成大数据量的excel文件要返璞归真,用java的基础技术,IO流来实现。...
201509考试批次《JAVA语言程序设计》(结课作业).pdf
java一次性查询处理几百万数据解决方法 几百万数据是可以处理的 暂时还没试过几千万级的数据处理
201503考试批次《JAVA语言程序设计》(结课作业).pdf
福师考试批次《Java程序分析研究报告》复习题及参考答案.doc
用友批次知识及典型案例处理.doc,专题讲座批次管理问题
SAP 分类管理、序列号管理、批次管理讲解 文档旨在对分类,序列号,批次的系统配置,应用过程展示等内容,内容较完整的展示了配置,操作过程,对于学习过程是一个不错的帮助文档。