摘要: 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 (2)一个线程持有锁会导致其它所有需要此锁的线程挂起。 (3)如果一个优先级高的线程等待一个优先级低的线 阅读全文
posted @ 2018-05-16 17:52 一点点征服 阅读(4170) 评论(0) 推荐(0) 编辑
摘要: LockSupport是JDK中比较底层的类,用来创建锁和其他同步工具类的基本线程阻塞原语。java锁和同步器框架的核心AQS:AbstractQueuedSynchronizer,就是通过调用LockSupport.park()和LockSupport.unpark()实现线程的阻塞和唤醒的。Lo 阅读全文
posted @ 2018-05-16 14:43 一点点征服 阅读(570) 评论(0) 推荐(0) 编辑
摘要: LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。 LockSupport中的park() 和 unpark() 的作用分别是阻塞线程和解除阻塞线程,而且park()和unpark()不会遇到“Thread.suspend 和 Thread.resume所可能引发的死锁”问题。 因为 阅读全文
posted @ 2018-05-16 14:24 一点点征服 阅读(988) 评论(1) 推荐(0) 编辑
摘要: LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语。LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数: [java] view plain copy public native void unpark(Th 阅读全文
posted @ 2018-05-16 14:16 一点点征服 阅读(528) 评论(0) 推荐(0) 编辑
摘要: thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。 t.join(); //使调用线程 t 在此之前执行完毕。 t.join(1000); //等待 t 线程,等待时 阅读全文
posted @ 2018-05-16 13:31 一点点征服 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 虽然关于讨论线程join方法的博客已经很多了,不过个人感觉挺多都讨论得不够全面,所以我觉得有必要对其进行一个全面的总结。 一、作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行。具体看代码: 上面程序结果是先打印完小明线程,在打印小东线程; 上面注释也大 阅读全文
posted @ 2018-05-16 13:29 一点点征服 阅读(1544) 评论(1) 推荐(0) 编辑