解決面試題T1,T2,T3在多執行緒中按順序執行
阿新 • • 發佈:2019-01-12
方法一、使用join方法處理
package com.cyc.redis.singleton; public class JoinExample { public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { @Override public void run() { System.out.println("T1"); } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { try { t1.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("T2"); } }); Thread t3 = new Thread(new Runnable() { @Override public void run() { try { t2.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("T3"); } }); t2.start(); t1.start(); t3.start(); } }
方法二、使用Yield結合setPriority
package com.cyc.redis.singleton; import com.sun.corba.se.impl.orb.ParserTable; import lombok.extern.slf4j.Slf4j; public class YieldExcample { public static void main(String[] args) { Thread t1 = new T1(); Thread t2 = new T2(); t1.setPriority(Thread.MIN_PRIORITY); //Min Priority t2.setPriority(Thread.MAX_PRIORITY); //Max Priority t1.start(); t2.start(); } } @Slf4j class T1 extends Thread { public void run() { for (int i = 0; i < 5; i++) { log.info("{}", i); Thread.yield(); } } } @Slf4j class T2 extends Thread { public void run() { for (int i = 0; i < 5; i++) { log.info("{}", i); Thread.yield(); } } } @Slf4j class T3 extends Thread { public void run() { for (int i = 0; i < 5; i++) { log.info("{}",i); Thread.yield(); } } }