
java线程
zjqbobo
这个作者很懒,什么都没留下…
展开
-
java自带线程池种类及好处
什么原因使我们不得不使用线程池?个人认为主要原因是:短时间内需要处理的任务数量很多使用线程池的好处:1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以下是Java自带的几种线程池:1、newFixedThreadPool 创建一个指定工作线程数量的线程池。每当提交一个任务就创建一个工作线程,如果原创 2017-07-13 09:42:00 · 528 阅读 · 0 评论 -
java高并发必备基础
一、前言借用Java并发编程实践中的话”编写正确的程序并不容易,而编写正常的并发程序就更难了”,相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的,本文算是对多线程情况下同步策略的一个简单介绍。二、 什么是线程安全问题线程安全问题是指当多个线程同时读写一个状态变量,并且没有任何同步措施时候,导致脏数据或者转载 2017-07-14 14:46:29 · 578 阅读 · 0 评论 -
线程异常重启
线程的异常处理不能像普通程序一样出现异常后抛出然后由创建并启用该线程的主线程try catch后进行异常处理,而是只能由该子线程自己try catch自己的异常,比如该子线程中连接数据库或者操作文件,会有可能出现IOException或者SQLException等异常,而且这些异常一旦发生,线程就会中止,中止的线程并不会对其他线程或者主线程造成影响,不过有时当我们用子线程去连接数据库时,假如连接不转载 2017-08-16 14:33:25 · 3565 阅读 · 0 评论 -
synchronized 与 Lock 的那点事
最近在做一个监控系统,该系统主要包括对数据实时分析和存储两个部分,由于并发量比较高,所以不可避免的使用到了一些并发的知识。为了实现这些要求,后台使用一个队列作为缓存,对于请求只管往缓存里写数据。同时启动一个线程监听该队列,检测到数据,立即请求调度线程,对数据进行处理。 具体的使用方案就是使用同步保证数据的正常,使用线程池提高效率。 同步的实现当然是采用锁了,java中使用锁的两个基本工具是转载 2017-08-14 11:11:16 · 209 阅读 · 0 评论 -
CountDownLatch用法
CountDownLatch 可以用来在一个线程中等待多个线程完成任务的类; 通常的使用场景是,某个主线程接到一个任务,起了n个子线程去完成,但是主线程需要等待这n个子线程都完成任务了以后才开始执行某个操作 JDK:一个同步辅助类,在完成一组其他线程执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由转载 2017-08-14 11:31:28 · 337 阅读 · 0 评论 -
使用Semaphore做并发个数控制
Semaphore可以控制某个资源可被同时访问的个数,acquire()获取一个许可,如果没有就等待,而release()释放一个许可。比如在Windows下可以设置共享文件的最大客户端访问个数。另外重入锁ReentrantLock也可以实现该功能,但实现上代码也要复杂些。 SemaPhore,一个信号量对象,可以定义信号量的个数,通过该信号量控制线程同步的数量。例如我们只允许同步三个转载 2017-08-14 15:14:55 · 576 阅读 · 0 评论 -
Callable和Future
接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务转载 2017-08-14 17:58:43 · 173 阅读 · 0 评论