线程状态

线程状态

阻塞状态

import lombok.SneakyThrows;

import java.text.SimpleDateFormat;

public class T {
    @SneakyThrows
    public static void main(String[] args) {

        new Thread(() -> {
            synchronized (T.class) {
                try {
                    Thread.sleep(6000);
                    System.out.println(new SimpleDateFormat("yyyy:MM:dd hh:mm:ss sss")
                            .format(System.currentTimeMillis()) + ":"
                            + Thread.currentThread().getName() + "Locked");
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }, "线程1").start();

        new Thread(() -> {
            synchronized (T.class) {/*new Object(),不同锁,不阻塞线程2争抢时间片*/
                try {
                    System.out.println(new SimpleDateFormat("yyyy:MM:dd hh:mm:ss sss")
                            .format(System.currentTimeMillis()) + ":"
                            + Thread.currentThread().getName() + "Locked");
                } catch (Exception ex) {

                }
            }
        }, "线程2").start();
    }

}

等待

import lombok.SneakyThrows;

import java.text.SimpleDateFormat;
import java.util.concurrent.TimeUnit;

public class T {
    @SneakyThrows
    public static void main(String[] args) {
        Object o = new Object();
        new Thread(() -> {
            synchronized (o) {
                try {
                    System.out.println(new SimpleDateFormat("yyyy:MM:dd hh:mm:ss sss")
                            .format(System.currentTimeMillis()) + ":"
                            + Thread.currentThread().getName() + "=》5s后才能继续执行");
                    o.wait();
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }, "线程1").start();

        new Thread(() -> {
            synchronized (o) {
                try {
                    TimeUnit.SECONDS.sleep(5);
                    System.out.println(new SimpleDateFormat("yyyy:MM:dd hh:mm:ss sss")
                            .format(System.currentTimeMillis()) + ":"
                            + Thread.currentThread().getName() + "唤醒");
                    o.notify();//注释此行,永久Waiting
                } catch (Exception ex) {

                }
            }
        }, "线程2").start();
    }
}
posted @ 2024-08-14 10:54  干饭达人GoodLucy  阅读(4)  评论(0编辑  收藏  举报