java多线程问题一
来源:互联网 发布:淘宝卖美女图片违规 编辑:程序博客网 时间:2024/06/08 20:07
多线程解决方案
- 两种方式
- synchronized:线程共享数据同步
- Threadlocal:线程因并发产生数据不一致问题
- 区别
- synchronized采取锁机制,数据共享
- Threadlocal 提供数据副本,数据隔离
线程池
在一个多线程用于程序中创建一个线程集合,需要执行新任务时进行线程复用,不需要大量的创建销毁过程,节省资源和时间。
优点
- 降低资源消耗
- 提高响应速度
- 提高线程可管理性
/** *源码 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), defaultHandler); }*///线程池创建的简单示例 public static void main(String[] args){ int count=200000;//队列数 long StartTime=System.currentTimeMillis();//开始时间 final List<Integer> l=new LinkedList<>(); ThreadPoolExecutor tp=new ThreadPoolExecutor(1,1,60, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(count));//创建线程池 final Random random=new Random(); for (int i = 0; i <count ; i++) { tp.execute(new Runnable() { @Override public void run() { l.add(random.nextInt());//将随机数加入线程 } }); } tp.shutdown(); try { tp.awaitTermination(1,TimeUnit.DAYS); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(System.currentTimeMillis()-StartTime);//结束时间 System.out.println(l.size()); }
0 0
- java多线程问题一
- Java多线程常问问题(一)
- Java多线程(一) 认识多线程
- java多线程:多线程(一)
- java高级多线程编程(一)--关于线程的停止问题
- java高级多线程编程(一)--关于线程的停止问题
- java高级多线程编程(一)--关于线程的停止问题
- Java多线程(2)生产者消费者问题(一)
- Java多线程学习之生产者消费者问题(一)
- Java中的多线程(一)
- Java多线程编程(一)
- 深入浅出JAVA多线程(一)
- Java多线程(一)
- Java多线程一
- Java----多线程详解(一)
- Java多线程编程一
- java 多线程开发一
- java中的多线程(一)
- Web Service ERROR: Set JAVA_HOME to the path where the JDK (6.0 or higher) is installed解决方式
- QT signal & slot 定义及用法
- 乐视面试题一个数组,找出数组中没有出现的最小的一个数字,比如[1,2,0],返回3,[1,2,4,5]返回3
- Ipynb文件的打开
- form表单已经加了enctype,但是eclipse报错提示:The current request is not a multipart request
- java多线程问题一
- typede的用法
- 那些年我们一起挖掘SQL注入 – 1.什么都没过滤的入门情况
- 第4周项目2-建设“单链表”算法库
- mysql触发器(Trigger)简明总结和使用实例
- Learning OpenCV——运动与跟踪
- TextView和EditText
- AndroidStudio gradle的解析
- Android.mk 文件语法详解