方法一、使用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();
}
}
}