sleep和wait方法的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Qgwperfect/article/details/88718192

sleep和wait方法的区别
1,sleep是Thread的方法,wait是Object的方法
2,sleep不会释放锁,但是wait会释放锁,并且会添加到waiting queue
3,sleep不需要同步,但是wait需要
4,sleep不需要唤醒,但是wait需要

import java.util.stream.Stream;

public class DiffOfSleepAndWait {
	
	private static final Object LOCK = new Object();
	
	public static void main(String[] args) {
		Stream.of("T1", "T2").forEach(name -> 
			new Thread(name) {
				@Override
				public void run() {
					//DiffOfSleepAndWait.method1();
					DiffOfSleepAndWait.method2();
				}
			}.start()
		);
	}

	public static void method1() {
		synchronized (LOCK) {
			try {
				System.out.println("The thread " + Thread.currentThread().getName() + " enter");
				Thread.sleep(20000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void method2() {
		synchronized (LOCK) {
			try {
				System.out.println("The thread " + Thread.currentThread().getName() + " enter");
				LOCK.wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

分别执行method1和method2方法,会看到很明显的效果。

猜你喜欢

转载自blog.csdn.net/Qgwperfect/article/details/88718192