需求背景:从excel导入一批数据,更新数据库里的数据,其中要调用其他系统的接口,接口调用成功才更新数据库,否则不更新
问题:调用接口那部分严重耗时(总共三个接口,其中一个耗时5s左右)
解决方方:调接口那部分使用多线程(CountDownLatch),但是现在获取不到调接口失败的那部分数据
请问下还有什么好的解决办法
问题:调用接口那部分严重耗时(总共三个接口,其中一个耗时5s左右)
解决方方:调接口那部分使用多线程(CountDownLatch),但是现在获取不到调接口失败的那部分数据
请问下还有什么好的解决办法
解决方案 »
- Appfuse中一个非常大的问题.org.dbunit.dataset.NoSuchTableException: user_role至今我还没看到一个非常明确的解决的方法.
- JSP权限控制?
- 如何获取webwork select 标签的选择值传给ACTION
- 关于web.xml的疑问
- log4j产生html格式日志文件
- 重复读取Clob报错
- 为啥是Math.sqrt(i)
- 问一下,substring()这个方法到底截取的是字符还是字节?
- Socket socket=ServerSocket.accpet();这个地方的问题?不知道怎么回事?谢谢!
- 关于Spring ioc组建扫描的问题
- 关于数据库同步方案
- JAVA问题,我把tomcat项目部署在一台电脑,我用另一台电脑用访问项目,然后我有一个方法是删除本地文件夹下面的文件,我想删除的是访问的那台电脑
// 定义一个静态变量,volatile是为了将其他线程中的副本值及时更新至主内存
public static volatile invokeScuccessCount = 0;
// 然后启动三个线程,这个线程类自己定义
Thread t1 = new MyThread(String invokeUrl);
t1.start();
Thread t2 = new MyThread(String invokeUrl);
t2.start();
Thread t3 = new MyThread(String invokeUrl);
t3.start();
// 主线程等待三个线程执行完成,也可以其他方式,怎么好用怎么来
t1.join();
t2.join();
t3.join();
// 此时三个接口都调用完毕,判断invokeScuccessCount是否等于3
if (invokeScuccessCount == 3){
updateData();
}
这个例子比较简单,如果要获取更详细的信息,可以将invokeScuccessCount换作其他数据结构,JSON或者HashMap都可以
另外注意的地方就是更新invokeScuccessCount时注意加锁
纯手打的,没有实际操作了,见谅