Thread.join中应用Object.wait保持:
//java.lang.Thread public final synchronized void join(long millis) throws InterruptedException { long base = System.currentTimeMillis(); long now = 0; if (millis < 0) { throw new IllegalArgumentException("timeout value is negative"); } if (millis == 0) { while (isAlive()) { wait(0); } } else { while (isAlive()) { long delay = millis - now; if (delay <= 0) { break; } wait(delay); now = System.currentTimeMillis() - base; } } }
wait方式,jdk文本文档中的表述时:Causes the current thread to wait ,wait方式会让当今进程从runnable变为waitting的情况。如何了解这话呢?最先每一目标都能够做为一个锁,wait方式是根类Object的方式,每一目标常有其wait方式,在main方式中实行以下编码:
public class Program{ public static void main(String[] args) throws Exception{ MyThread myThread = new Thread(new Runnable(){ @Override public void run() { //this就是说当今目标myThread,同歩获得到myThread锁 synchronized (this) { this.notify();//唤起在myThread锁住等候的单独进程。即main主线任务程从waitting变为runnable,main方式执行 } } }); myThread.setName("myThread"); myThread.start(); //同歩获得到myThread锁 synchronized (myThread) { //使当今进程(main)从runnable进到waitting情况,等候别的某一进程启用myThread锁的 notify方式 myThread.wait(); } }
myThread目标就是说一个锁,main方式synchronized (myThread)获得到锁,并实行该锁的wait方式,使main进程一直等候,当进程MyThread中获得同一个锁,并实行该锁的notify方式,使以前因该锁等候main方式能够 执行。
Copyright © 2004-2024 Ynicp.com 版权所有 法律顾问:建纬(昆明)律师事务所 昆明市网翼通科技有限公司 滇ICP备08002592号-4