![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
ox_ooxx
oxooxx
展开
-
synchronized的优缺点。
使用synchronized,当多个线程尝试获取锁时,未获取到锁的线程会不断的尝试获取锁,而不会发生中断,这样会造成性能消耗。而ReentranLock的lockInterruptibly()可以优先相应中断。举例:两个线程A,B,A获得了锁(A.lockInterruptibly()),B在请求锁的时候发生阻塞,如果调用B.interrupt(),会中断B的阻塞。原创 2015-11-18 10:52:56 · 6142 阅读 · 1 评论 -
Thread.CurrentThread.getName 与 this.getName()
public class CountOperate extends Thread {public CountOperate() {System.out.println("Thread.currentThread().getName():" + Thread.currentThread().getName()); //this代表当前Count原创 2016-11-15 10:45:13 · 861 阅读 · 0 评论 -
Java Join
Join 是Thread类的方法, 一般会 thread.Join来调用。如何理解:Join英文翻译为加入, thread.Join可以理解为thread这个线程类加入进来了,需要等待这个线程的run方法执行完成后,再干别的事。或者说要等待thread这个线程的结果。原创 2016-12-07 11:28:58 · 298 阅读 · 0 评论 -
Java Condition 控制多线程有序工作
Condition的作用:相当与Notify跟Wait,Notify只能唤醒等待队列中的某一个线程,通常是先wait的线程。But Condition.Notify 可以唤醒指定等待的线程。 举个列子,定义condition1\condition2如果线程1 使用condition1.await,线程2用condition2.await,线程3使用condition1.notify只能原创 2017-12-25 10:07:28 · 385 阅读 · 4 评论 -
Java Join机制
主线程执行时间较短,子线程执行时间较长,则主线程执行完成了,子线程还在执行中。如果主线程要等子线程执行完成,就可以用Join方法。说明Join方法是一个阻塞性方法。可以结合源代码去理解:其中关键一段:while(isAlive){wait(0)}表示当前执行的线程,需要等待。也说明了join会释放当前线程的锁。ThreadA{ Public void原创 2017-12-26 11:34:31 · 641 阅读 · 0 评论 -
如何理解Condition
多线程可以提高工作效率,则免不了线程之间互相通信。wait跟notify是老的方法,每个对象会有一个监视器,有一个就绪队列,一个阻塞队列。t1、t2、t3表示三个线程,当三个线程启动了,在线程run方法中,调用了wait,就会把运行的线程放到阻塞队列,t1t2t3当某个线程调用了notify方法,会在阻塞队列中,取出一个线程,继续执行,默认取t1原创 2017-12-28 10:19:31 · 278 阅读 · 0 评论