多线程
ox_ooxx
oxooxx
展开
-
synchronized的优缺点。
使用synchronized,当多个线程尝试获取锁时,未获取到锁的线程会不断的尝试获取锁,而不会发生中断,这样会造成性能消耗。 而ReentranLock的lockInterruptibly()可以优先相应中断。举例:两个线程A,B,A获得了锁(A.lockInterruptibly()),B在请求锁的时候发生阻塞,如果调用 B.interrupt(),会中断B的阻塞。原创 2015-11-18 10:52:56 · 6144 阅读 · 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 · 864 阅读 · 0 评论 -
Java Join
Join 是Thread类的方法, 一般会 thread.Join来调用。 如何理解: Join英文翻译为加入, thread.Join可以理解为thread这个线程类加入进来了,需要等待这个线程的run方法执行完成后,再干别的事。 或者说要等待thread这个线程的结果。原创 2016-12-07 11:28:58 · 299 阅读 · 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 · 386 阅读 · 4 评论 -
Java Join机制
主线程执行时间较短,子线程执行时间较长,则主线程执行完成了,子线程还在执行中。如果主线程要等子线程执行完成,就可以用Join方法。 说明Join方法是一个阻塞性方法。可以结合源代码去理解: 其中关键一段: while(isAlive){ wait(0) } 表示当前执行的线程,需要等待。也说明了join会释放当前线程的锁。 ThreadA{ Public void原创 2017-12-26 11:34:31 · 645 阅读 · 0 评论 -
如何理解Condition
多线程可以提高工作效率,则免不了线程之间互相通信。 wait跟notify是老的方法,每个对象会有一个监视器,有一个就绪队列,一个阻塞队列。 t1、t2、t3表示三个线程,当三个线程启动了,在线程run方法中,调用了wait,就会把运行的线程放到阻塞队列, t1 t2 t3 当某个线程调用了notify方法,会在阻塞队列中,取出一个线程,继续执行,默认取t1原创 2017-12-28 10:19:31 · 280 阅读 · 0 评论