版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
很多公司都要高并发经验
并发在很多公司都会用到,特别是电商公司,尤其是双十一秒杀系统
下面我来带大家写一个简单的并发demo,不说了直接上代码
package com.nice;
import java.util.concurrent.*;
public class ExecutorTest {
public static boolean flag = true;
/**
* 简单并发实现
* 创建一个线程池和一个计数器锁,让线程池先进入阻塞状态,都持有同一把锁,然后同时释放锁可以让所有线程一起执行而达到一个并发的目的
* @param args 主函数参数
*/
public static void main(String[] args) {
//创建一个计数器锁
CountDownLatch latch = new CountDownLatch(100);
//创建阻塞队列
LinkedBlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable> ();
//循环一百次,队列中添加一百个线程
for (int i = 0; i < 100; i++) {
queue.add(new Runnable() {
@Override
public void run() {
//目的是为了启动第一个线程时延迟一下
if (flag){
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
flag = false;
}
//释放锁
latch.countDown();
System.out.println("nice");
}
});
}
//创建一个线程池
ExecutorService executor = new ThreadPoolExecutor(100, 1000, 200, TimeUnit.SECONDS,
queue);
//执行队列
executor.execute(queue.peek());
try {
//等待状态
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
//关闭线程池
executor.shutdownNow();
}
}