目录
JAVA面试必会知识点[基础]
JAVA面试必会知识点「容器部分」
JAVA面试必会知识点「JVM部分」
JAVA面试必会知识点「mysql部分」
JAVA面试必会知识点「反射」
实例分析JAVA面试必会知识点 「多线程-创建线程的方式」
实例分析JAVA面试必会知识点 「多线程的优势与引发的问题」
Thread.join() 与Thread.yield()
- Thread.join()
已启动的线程等待线程死亡, 阻塞其他线程.
当线程为未启动状态, 调用此方法无效
2 . Thread.yield()
使当前线程从执行状态(运行状态)变为可执行态(就绪状态)
注意: cpu会从众多的可执行态里优先级高的线程里选择,当前也就是刚刚的那个线程还是有可能会被再次执行到的,yield从未导致线程转到等待/睡眠/阻塞状态。在大多数情况下,yield()将导致线程从运行状态转到可运行状态
实例:
JoinDemo.java
package com.java.thread.demo4;public class JoinDemo { public static void main(String[] args){ Thread t1 = new Thread( new ThreadTest("t1")); Thread t2 = new Thread( new ThreadTest("t2")); t1.start(); try{ t1.join(); //t1.join(2000); }catch (InterruptedException e){ e.printStackTrace(); } t2.start(); }}
ThreadTest.java
package com.java.thread.demo4;public class ThreadTest implements Runnable { String id; public ThreadTest(String id){ this.id = id; } @Override public void run() { int i=0; for(; i<5; i++){ try{ Thread.sleep(1000); }catch (InterruptedException e){ e.printStackTrace(); } System.out.println("id= "+id+" index="+i); } }}