CountDownLatch,interrupt, wait, notify, Thread各方法
2017-02-03 11:00
495 查看
CountDownLatch begin = new CountDownLatch(1);
begin.countDown(); //锁计数减1
begin.await(); //阻塞等,直到begin为0,或当前线程被其他线程中断
http://man.ddvip.com/program/java_api_zh/java/util/concurrent/CountDownLatch.html
【2】Thread, 几个一直然不清的方法
以下为Thread的自带方法:
interrupt() 中断线程.
Thread.interrupt()方法,不会中断一个正在运行的线程。这一方法实际上完成的是,在线程“受到阻塞”时抛出一个中断信号,这样线程就得以退出阻塞的状态。更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞,那么,它将接收到一个中断异常(InterruptedException),从而提早地终结被阻塞状态。
sleep() 在指定的时间内让当前正在执行的线程休眠(暂停执行)
join() 等待该线程终止
yield() 暂停当前正在执行的线程对象,并执行其他线程
http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/lang/Thread.html#interrupt()
以下为从Object继承过来的方法,这也意味着每个对象都可以这样:
notify() 唤醒在此对象监视器上等待的单个线程
notifyAll() 唤醒在此对象监视器上等待的所有线程
wait() 导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法
wait()允许我们将线程置入“睡眠”状态,同时又“积极”地等待条件发生改变。而且只有在一个notify()或notifyAll()发生变化的时候,线程才会被唤醒,并检查条件是否有变。
http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/lang/Object.html#notify()
【3】wait() vs. sleep()/suspend()
例如,在synchronized(o)中,执行sleep()/suspend(),二者将霸气的占着o锁不放,而wait()却可以大方的放锁。
wait()只是暂时放弃o锁,给其他线程用,最终还是要收回来,那什么时候、怎么收回来呢?notify()/notifyAll(),这里暂不讨论wait(timeout)的情况。
我们可将notify()/notifyAll()置入任何同步方法或同步块内部,无论在那个类里是否准备进行线程相关的处理。而且,我们也只能在同步方法或同步块里调用wait()和notify()。
【4】wait()/notify()示例代码:
synchronized(b){
try{
b.wait();
}catch(InterruptedException e){
}
}
synchronized(this){
try{
notify();
}catch(…){
}
}
http://wenku.baidu.com/view/ed6dceea19e8b8f67c1cb9e8.html
相关文章推荐
- CountDownLatch,interrupt, wait, notify, Thread各方法
- Thread_wait、notify、notifyAll的使用方法
- Java中的Object的Wait() 和notify()方法使用时应注意的地方和Thread中的sleep()方法
- Thread_wait、notify、notifyAll的使用方法
- Java多线程中的一些方法介绍wait()、notify()、sleep()、interrupt()
- Thread_wait、notify、notifyAll的使用方法
- java线程中的sleep/wait/notify/yield/interrupt方法 整理
- Thread_wait、notify、notifyAll的使用方法
- java多线程 关于synchronized wait notify CountDownLatch CyclicBarrier Semaphore
- Thread_wait、notify、notifyAll的使用方法
- wait()和notify(),notifyAll()是Object类的方法,sleep()和yield()是Thread类的方法
- Java中的Object的Wait() 和notify()方法使用时应注意的地方和Thread中的sleep()方法
- 线程之间通信+wait/notify+CountDownLatch
- Java中的Object的Wait() 和notify()方法使用时应注意的地方和Thread中的sleep()方法
- Thread_wait、notify、notifyAll的使用方法
- Java中CountDownLatch、CyclicBarrier、Thread.join方法基本应用
- Thread的join()方法和Object的wait(),notify(),notifyAll()方法
- Java并发07:Thread的基本方法(4)-Thread.sleep()、Object.wait()、notify()和notifyAll()
- java Thread方法解析: sleep join wait notify notifyAll
- Thread_wait、notify、notifyAll的使用方法