多线程
小布的世界
追逐猎物仅仅靠猛跑是不够的,尤其在对付大群猎物的时候,必要的准备和步骤是获得成功的基础。而谋划是实现这一切的唯一保障。
展开
-
监控一个方法的执行时间(不用抛出InterruptedException异常)
在一个调用链上,往往有多个方法或者应用协同来处理,那么如果在一个方法上耗时比较长的话,往往会导致整体响应时间过长,或者导致系统错误,http调用还可以设置超时时间,如果一个方法处理某个东西时间过长了怎么办,网上找到很多监控方法,大多都是要抛一个可中断的异常才能行,下面介绍一个不用抛InterruptedException异常的方法。直接上代码,很容易懂,就不啰嗦了。package com.examp原创 2017-03-02 17:47:27 · 1455 阅读 · 0 评论 -
JDK并发包(concurrent) - 重入锁(ReentrantLock)
重入锁是可以完全替代synchronized关键字的,在jdk 5.0的早期版本中,重入锁的性能远远高于synchronized的,但是从JDK 6.0开始,jdk在synchronized上做了大量优化,使得两者的性能差距并不是很大。 重入锁使用java.util.concurrent.locks.ReentrantLock类来实现的,先看个例子package com.example.threa原创 2017-03-08 17:46:40 · 436 阅读 · 0 评论 -
JDK并发包(concurrent) - 读写锁(ReadWriteLock)
ReadWriteLock是JDK1.5中提供的读写分离锁。读写分离可以有效的减少锁竞争,以此来高系统的性能。 读写锁允许多个线程同时读,但是考虑到数据完整性,写写操作,和读写操作依然是需要相互等待和持有锁的。如下图:如果在系统中,读操作次数远远大于写操作,则读写锁就可以发挥最大的功效了。上代码:package com.example.thread;import java.util.Random;原创 2017-03-09 10:47:08 · 1163 阅读 · 0 评论 -
JDK并发包(concurrent) - 线程控制工具类
CountDownLatch是一个非常实用的多线程控制工具类,这个工具通常用来控制线程等待,他可以让某一个线程等待直到倒计时结束,在开始执行。就像火箭点火发射一样,为了确保发射的成功,在发射之前要进行一系列的检查,只有所有的检查都完成之后,才能进行发射,下面用CountDownLatch来模拟一下这个过程。package com.example.thread;import java.util.Ran原创 2017-03-09 11:48:24 · 601 阅读 · 0 评论 -
java多线程基础知识
一、线程的状态线程的所有状态都在Thread类中State枚举中 NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATEDNEW:表示线程刚刚创建,还没有开始执行RUNNABLE:表示已经创建好的线程,调用start()方法后,并且线程所需要的资源都已准备好BLOCKED:表示正在执行的线程遇到synchronized同步快,就会进入BLOC原创 2017-03-03 17:13:40 · 845 阅读 · 0 评论 -
JDK并发包(concurrent) - 线程池
多线程的软件设计,确实可以最大限度的发挥现代多核处理器的计算能力,提高系统的吞吐量和性能。但是,若不加控制和管理的随意使用线程,对系统的性能反而会产生不利的影响。一、什么是线程池为了避免系统频繁的创建和销毁线程,我们可以让创建的线程复用。如果你写过数据库方便的代码,那你肯定知道数据库连接池。或者是发送http请求时候的,http连接池。亦或者是发送mq消息时候的连接池。线程池于他们的作用是一样的,线原创 2017-03-09 17:52:30 · 2129 阅读 · 0 评论 -
高并发下锁的优化
一、减少锁的持有时间对于使用锁进行并发控制的应用程序而言,在锁竞争过程中,单个线程对锁的持有时间与系统性能有着直接的关系。如果一个线程持有锁的时间很长,必然会导致等待锁的线程数量增加,进而影响系统的性能。一个较为优化的解决方案是,只在必要时进行同步,这样就能明显减少线程持有锁的时间,有助于降低锁冲突的可能性,进而提升系统的并发能力。二、减小锁的粒度减小锁的粒度,也是削弱多线程锁竞争的有效手段。这种技原创 2017-03-15 14:55:44 · 1350 阅读 · 0 评论 -
ThreadLock
除了控制资源的访问,我们还可以增加资源来保证所有对象的线程安全。比如,让100个人填写个人信息表,如果只有一只比,那么大家就得挨个填写,对于管理人员来说必须保证大家不会去哄抢这仅有的一支笔,否则,谁也填不完。从另外一个角度出发,我们干脆就准备100支笔,人手一只,那么所有人都可以各自为营,很快就能填完表格。如果锁是第一种思路,那么ThreadLock就是使用第二种思路了。一,简单使用从ThreadL原创 2017-03-15 16:52:11 · 8114 阅读 · 5 评论