您的位置:首页 > 编程语言 > Java开发

【java】java线程并发测试模版

2016-04-13 13:39 429 查看
这里申请了1000个线程,并且执行1000次任务。当所有任务完成后,main退出。

public class Test {
public static void main(String[] args) {
int count = 1000;
ExecutorService executorService = Executors.newFixedThreadPool(count);
for (int i = 0; i < count; i++)
executorService.execute(new Test().new Task());

executorService.shutdown();
while (!executorService.isTerminated()) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

public class Task implements Runnable {

@Override
public void run() {
try {
// 测试内容
} catch (Exception e) {
e.printStackTrace();
}
}
}
}


如果要实现真正的并发同时执行,可通过CyclicBarrier来控制。

public class Test {
public static void main(String[] args) {
int count = 1000;
CyclicBarrier cyclicBarrier = new CyclicBarrier(count);
ExecutorService executorService = Executors.newFixedThreadPool(count);
for (int i = 0; i < count; i++)
executorService.execute(new Test().new Task(cyclicBarrier));

executorService.shutdown();
while (!executorService.isTerminated()) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

public class Task implements Runnable {
private CyclicBarrier cyclicBarrier;

public Task(CyclicBarrier cyclicBarrier) {
this.cyclicBarrier = cyclicBarrier;
}

@Override
public void run() {
try {
// 等待所有任务准备就绪
cyclicBarrier.await();
// 测试内容
} catch (Exception e) {
e.printStackTrace();
}
}
}
}


转自 http://flysnowxf.iteye.com/blog/1188496
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: