2017年12月12日
摘要:
ConditionObject是同步器AbstractQueuedSynchronizer的内部类,因为Condition的操作需要获取相关联的锁,所以作为同步器的内部类也较为合理。每个Condition对象都包含着一个队列,该队列是Condition对象实现等待/通知功能的关键。该队列中的节点和同
阅读全文
posted @ 2017-12-12 16:34
飞奔的菜鸟
阅读(149)
推荐(0)
摘要:
1 class BoundedQueue{ 2 private Object[] items; 3 //添加的下标、删除的下标、数组当前数量 4 private int addIndex,removeIndex,count; 5 private Lock lock = new ReentrantLock(); 6 private Conditi...
阅读全文
posted @ 2017-12-12 16:21
飞奔的菜鸟
阅读(189)
推荐(0)
2017年12月11日
摘要:
读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。 只需在读操作时获取读锁,写操作时获取写锁。当写锁被获取时,后续的读写操作都会被阻塞,写锁释放后,所有操作继续执行。 该锁支持重进入。 写锁能够降级成为读锁。 readLock()、writeLock()
阅读全文
posted @ 2017-12-11 22:07
飞奔的菜鸟
阅读(784)
推荐(0)
摘要:
重入锁ReentrantLock,就是支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁。除此之外,该锁还支持获取锁时的公平和非公平性选择。 重进入是指任意线程在获取到锁之后能够再次获取该锁而不会被锁所阻塞。
阅读全文
posted @ 2017-12-11 21:39
飞奔的菜鸟
阅读(117)
推荐(0)
摘要:
队列同步器 AbstractQueuedSynchronizer,是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量,通过内置的FIFO队列来完成资源获取线程的排队工作。 同步器的主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态。 同步器是实现锁(任意同步组件)
阅读全文
posted @ 2017-12-11 15:56
飞奔的菜鸟
阅读(192)
推荐(0)
摘要:
LOCK接口提供了与synchronized关键字类似的同步功能,只是在使用时需要显式地获取和释放锁。虽然它缺少了(通过synchronized块或方法所提供的)隐式获取和释放锁的便捷性,但是却拥有了获取和释放锁的可操作性、可中断的获取锁以及超时获取锁等多种synchronized关键字所不具备的同
阅读全文
posted @ 2017-12-11 15:10
飞奔的菜鸟
阅读(120)
推荐(0)
2017年11月27日
摘要:
描述:使用等待超时模式来构造一个简单的数据库连接池,在示例中模拟从连接池中获取、使用和释放连接的过程。客户端获取连接的过程被设计成等待超时模式 输出结果:
阅读全文
posted @ 2017-11-27 22:31
飞奔的菜鸟
阅读(417)
推荐(0)
摘要:
1 //对当前对象加锁 2 public synchronized Object get(long mills) throws InterruptedException{ 3 long future = System.currentTimeMillis() + mills; 4 long remaining = mills; 5 ...
阅读全文
posted @ 2017-11-27 21:15
飞奔的菜鸟
阅读(231)
推荐(0)
2017年11月26日
摘要:
ThreadLocal,线程变量,是一个以ThreadLocal对象为键、任意对象为值的存储结构。这个结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。例如: Profiler可以用来计算方法的耗时,在方法之前调用begin,方法之后调用end
阅读全文
posted @ 2017-11-26 22:49
飞奔的菜鸟
阅读(198)
推荐(0)
摘要:
如果一个线程A执行了thread.join()语句,其含义是:当前线程A等待thread线程终结之后才从thread.join()返回,继续执行。
阅读全文
posted @ 2017-11-26 22:39
飞奔的菜鸟
阅读(242)
推荐(0)