- 浏览: 2867 次
- 性别:
- 来自: 杭州
最新评论
文章列表
JAVA多线程编程实践
- 博客分类:
- JAVA多线程之Semaphore
Semaphore
信号量用来控制能够同时访问某特定资源的数量,或者同时执行某一给定的操作结果。
一个Semaphore管理一个有效的许可集,许可的初始化量通过构造函数传递给Semaphore。活动能够获得的许可,并在使用后释放许可。如果没有许可,accquire会阻塞,直到有可用的许可。release方法返回一个许可。
Semaphore的构造函数
1.Semaphore(int permits);
2.Semaphore(int permits, boolean fair) 设置是否公平 fair为true即为满足FIFO原则,false为获取线程无序。
...
1.闭锁
闭锁(latch)是一种Synchronizer,它可以延迟线程的进度直到线程打到终止状态。一个闭锁工作起来就像一道大门:直到闭锁达到终点状态之前,门一直是关着的,没有线程能够通过,在终点状态到来的时候,门开了,允许所有线程通过。一旦闭锁达到了终点状态,它就不能改变状态了,所以它会永远保持敞开状态。闭锁可以用来确保特定活动直道其他活动完成后发生。(引用 java并发编程实践)
2.CountDownLatch
CountDownLatch是一个灵活的闭锁的实现,允许一个任务等待其他任务执行完毕后才能执行,闭锁的状态包括一个计数器,用来表现需要等待的任务数。c ...
JAVA多线程编程实践
- 博客分类:
- JAVA多线程编程实践之Lock
Lock & Synchronized
lock与synchronized都可以实现线程同步。但是
1) Lock提供了可定时tryLock(long, TimeUnit),可轮询(try lock())、可中断lockInterruptibly()的锁获取操作、公平队列等功能。
2) 性能上lock会比synchronized相对来说要好点(java5会好很多)。
3) Lock提供了Condition,对线程的等待和唤醒等操作更加灵活,一个ReentrantLock可以有多个Condition实例,所以更有扩展性。
lo ...
1.Executor框架
Executor只是个简单的接口,但它却为一个灵活而且强大的框架创造了基础,这个框架可异步执行,支持不同类型的任务执行策略。
public interface Executor {
void execute(Runnable command);
}
2.创建线程池
通过Executors中的某个静态工厂方法来创建一个线程池:
newFixedThreadPool:创建一个定长的线程池,每提交一个任务创建一个线程,直道到达池的最大长度。
newCachedThreadPool:创建一个可缓存的线程 ...
1.线程的创建:
接触过java的人都知道基本实现有3种:创建Thread子类、实现runnable接口、创建callable的接口实现类
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class CreateThread {
public static void main(String[] args) {
//通过创建子类 ...