`
文章列表
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 ...
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) { //通过创建子类 ...
Global site tag (gtag.js) - Google Analytics