About the diffrence of wait timed_wait and block in java

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * 
 * @author daxin
 *
 */
public class Main1 {

	static Lock lock = new ReentrantLock();

	public static void main(String[] args) throws Exception {

		// TIMED_WAITING
		// Thread.sleep(5000*5000);

		// ----------------synchronized---------------------
		// TIMED_WAITING
		new Thread(target1, "1").start();
		Thread.sleep(200);
		// BLOCKED
		new Thread(target1, "2").start();

		// ----------------lock------------------
		// TIMED_WAITING
		new Thread(target2, "3").start();
		Thread.sleep(200);
		// WAITING
		new Thread(target2, "4").start();

	}

	public static synchronized void get() {

		try {
			Thread.sleep(5000 * 5000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {

		}
	}

	public static void get2() {

		try {
			lock.lock();
			Thread.sleep(5000 * 5000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			lock.unlock();
		}
	}

	static Runnable target1 = new Runnable() {

		@Override
		public void run() {
			// TODO Auto-generated method stub
			get();
		}
	};

	static Runnable target2 = new Runnable() {

		@Override
		public void run() {
			// TODO Auto-generated method stub
			get2();
		}
	};

}

 

posted @ 2017-08-23 11:23  bf378  阅读(130)  评论(0编辑  收藏  举报