摘要:
原文链接作者:Jakob Jenkov译者:申章校对:丁一java中的锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂。因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱sync... 阅读全文
摘要:
原文链接 作者:Jakob Jenkov译者:余绍亮 校对:丁一嵌套管程锁死类似于死锁, 下面是一个嵌套管程锁死的场景线程1获得A对象的锁。线程1获得对象B的锁(同时持有对象A的锁)。线程1决定等待另一个线程的信号再继续。线程1调用B.wait(),从而释放了B对象上的锁,但仍然持有对象A的锁。线程... 阅读全文
摘要:
原文链接 作者:Jakob Jenkov译者:申章 校对:丁一在java中有些情况下死锁是可以避免的。本文将展示三种用于避免死锁的技术:加锁顺序当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生。看下面这个例子:T... 阅读全文
摘要:
原文链接作者:Jakob Jenkov译者:申章校对:丁一java中死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁。死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候。例如,如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发生... 阅读全文
摘要:
原文链接作者:Jakob Jenkov译者:杜建雄校对:方腾飞java中线程通信的目标是使线程间能够互相发送信号。另一方面,线程通信使线程能够等待其他线程的信号。例如,线程B可以等待线程A的一个信号,这个信号会通知线程B数据已经准备好了。1、通过共享对象通信java学习中线程间发送信号的一个简单方式... 阅读全文
摘要:
原文链接作者:Jakob Jenkov译者:李同杰Java同步块(synchronized block)用来标记方法或者代码块是同步的。Java同步块用来避免竞争。本文介绍以下内容:Java同步关键字(synchronzied)实例方法同步静态方法同步实例方法中同步块静态方法中同步块Java同步示例... 阅读全文
摘要:
原文链接作者:Jakob Jenkov译者:高嵩校对:丁一在java中当多个线程同时访问同一个资源,并且其中的一个或者多个线程对这个资源进行了写操作,才会产生竞态条件。多个线程同时读同一个资源不会产生竞态条件。我们可以通过创建不可变的共享对象来保证对象在线程间共享时不会被修改,从而实现线程安全。如下... 阅读全文