首页 > 代码库 > 多线程日记(17.5.4)
多线程日记(17.5.4)
1.线程的等待与唤醒wait()和notify();
public class Test{ public static void main(String[]args){ Thread thread1=new NewThread("t1"); synchronized(thread1){ System.out.println(Thread.currentThread().getName()+" is running"); thread1.start(); System.out.println(Thread.currentThread().getName()+" is running"); try{ thread1.wait(); System.out.println(Thread.currentThread().getName()+" is running"); }catch(InterruptedException e){ e.printStackTrace(); } } } } class NewThread extends Thread{ public NewThread(String name){ super(name); } public void run(){ synchronized(this){ System.out.println(Thread.currentThread().getName()+":"+"notify"); this.notify(); } } }
线程thread1是在main这个主线程上创建的,所以一开始运行的时主线程main,当thread1调用start方法,处于就绪状态,直到main被阻塞,cpu允许threadd1执行,会输出thread1:notify,直到thread1调用wait()方法被进行无线等待,最后main()进行运行。
如下程序:main运行→thread1调用start()方法运行→然后让thread1调用wait()方法进行等待→主线程main运行.
public class Test{ public static void main(String[]args){ Thread thread1=new NewThread("t1"); synchronized(thread1){ try{ System.out.println(Thread.currentThread().getName()+":"+"running"); //start thread1 thread1.start(); //thread1 wait thread1.wait(10000); System.out.println(Thread.currentThread().getName()+":"+"running"); }catch(InterruptedException e){ e.printStackTrace(); } } } } class NewThread extends Thread{ public NewThread(String name){ super(name); } public void run(){ synchronized(this){ System.out.println(Thread.currentThread().getName()+":"+"running"); } } }
多线程日记(17.5.4)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。