Thread state
Verify thread status
import lombok.SneakyThrows;
public class Demo08 {
public static void main(String[] args) throws InterruptedException {
Demo08Service service = new Demo08Service();
Demo08ThreadA t1 = new Demo08ThreadA(service);
Demo08ThreadA t2 = new Demo08ThreadA(service);
System.out.println("t1的线程状态:" + t1.getState());
t1.start();
System.out.println("t1的线程状态:" + t1.getState());
Thread.sleep(500L);
System.out.println("t1的线程状态:" + t1.getState());
t2.start();
System.out.println("t2的线程状态:" + t2.getState());
Thread.sleep(5000L);
System.out.println("t1的线程状态:" + t1.getState());
Demo08ThreadB t3 = new Demo08ThreadB(new Object());
t3.start();
Thread.sleep(100L);
System.out.println("t3的线程状态:" + t3.getState());
}
}
class Demo08Service{
public synchronized void doSomething() throws InterruptedException {
Thread.sleep(3000L);
}
}
class Demo08ThreadA extends Thread{
private Demo08Service service;
public Demo08ThreadA(Demo08Service service){
this.service = service;
}
@SneakyThrows
@Override
public void run() {
service.doSomething();
}
}
class Demo08ThreadB extends Thread{
private Object lock;
public Demo08ThreadB(Object lock){
this.lock = lock;
}
@SneakyThrows
@Override
public void run() {
synchronized (lock){
lock.wait();
}
}
}
suspend()
import lombok.Data;
public class ThreadSuspend {
private static demo01 demo01 = new demo01();
public static void main(String[] args) {
ThreadSuspend ts = new ThreadSuspend();
Thread t1 = new Thread(() -> {
while (true) {
ts.doSomething();
}
});
t1.setName("AAA线程");
t1.start();
Thread t2 = new Thread(() -> {
while (true) {
ts.doSomething();
}
});
t2.setName("BBB线程");
t2.start();
}
public void doSomething(){
demo01.printString();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Data
class demo01{
private String name = "layman";
private String password = "12345";
public synchronized void printString(){
System.out.println(Thread.currentThread().getName()+"---name:"+name+" ,password"+password);
if("AAA线程".equals(Thread.currentThread().getName())){
Thread.currentThread().suspend();
}
}
}