测试并发编程demo
来源:互联网 发布:java商城系统开发 编辑:程序博客网 时间:2024/05/29 21:31
package cn.com;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.Future;
import java.util.concurrent.RecursiveTask;
import java.util.concurrent.atomic.LongAdder;
import org.junit.Before;
import org.junit.Test;
public class FileTest {
ExecutorService newFixedThreadPool;ForkJoinPool fjp;@Beforepublic void initalMethod() { int nThreads = Runtime.getRuntime().availableProcessors(); this.newFixedThreadPool = Executors.newFixedThreadPool(nThreads); fjp = new ForkJoinPool();}/** * 测试提交多个带有返回值的任务 * @throws FileNotFoundException * @throws InterruptedException * @throws ExecutionException */@Testpublic void testFile1() throws FileNotFoundException, InterruptedException, ExecutionException { // 添加任务 List<Mytasks> tasks = new ArrayList<Mytasks>(); tasks.add(new Mytasks()); tasks.add(new Mytasks()); tasks.add(new Mytasks()); tasks.add(new Mytasks()); tasks.add(new Mytasks()); List<Future<Long>> res = newFixedThreadPool.invokeAll(tasks); LongAdder la = new LongAdder(); for (int i = 0, size = res.size(); i < size; i++) { la.add(res.get(i).get()); } System.out.println(la.sum());}
}
class Mytasks implements Callable {
LongAdder la = new LongAdder();@Overridepublic Long call() throws Exception { for (int i = 0; i < 999999; i++) { la.increment(); } return la.sum();}
}
class MyTasksB extends RecursiveTask {
private static final long serialVersionUID = 1L;ConcurrentLinkedQueue<Integer> clq;public MyTasksB(ConcurrentLinkedQueue<Integer> clq) { super(); this.clq = clq;}@Overrideprotected Integer compute() { if (clq.size() > 10000) { MyTasksB forkJob = new MyTasksB(clq); forkJob.fork(); } return null;}
}
0 0
- 测试并发编程demo
- 并发编程小demo
- Shell并发编程Demo
- 针对并发测试的小demo
- 并发编程11-测试并发程序
- Java 并发编程之测试
- Java 并发编程之测试(二)
- Java 并发编程之测试(三)
- Java 并发编程之测试(三)
- Python3 多线程并发 post 压力测试 并发编程
- java并发编程实战-并发程序的测试
- Demo(测试)
- Demo测试
- demo-测试
- 多线程并发demo
- JAVA多线程并发Demo
- Java并发信号量demo
- linux 并发服务器 demo
- Android开发工具之Android Studio---版本控制SVN使用(二)
- 有道云笔记markdown语法整理
- 求成绩
- C++ Primer 学习总结(附习题程序)
- Lucene实践:全文检索的基本原理 (转载)
- 测试并发编程demo
- Android Surface View绘图API详解
- JDK源码学习(3)-LinkedHashMap源码学习
- 常见比较排序算法的实现(归并排序、快速排序、堆排序、选择排序、插入排序、希尔排序)
- 华中农业大学第四届程序设计大赛网络同步赛 D题 Robbing Red Packets
- C++对C的扩展之cin与cout
- hdoj1150(最小点覆盖)
- UVa 109 - SCUD Busters(凸包)
- Ural——1297Palindrome(Manacher)