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();
		}
	};

}
时间: 2024-10-23 12:56:11

About the diffrence of wait timed_wait and block in java的相关文章

java 线程之间的协作 wait()与notifyAll()

package org.rui.thread.block; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; // wax蜡 电气自己主动方式 public class WaxOMatic { public static void main(String[] args) throws Interrupte

【转载】快速掌握一个语言最常用的50%

原文:快速掌握一个语言最常用的50% 现在的开发工作要求我们能够快速掌握一门语言.一般来说应对这种挑战有两种态度:其一,粗粗看看语法,就撸起袖子开干,边查Google边学习:其二是花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作.然而这两种方法都有弊病.第二种方法的问题当然很明显,不仅浪费了时间,偏离了目标,而且学习效率不高.因为没有实际问题驱动的语言学习通常是不牢固不深入的.有的人学着学着成了语言专家,反而忘了自己原本是要解决问题来的.第一种路子也有问题,在对于这种语言的

Android蓝牙开发浅析【转】

本文转载自:http://blog.csdn.net/geekdonie/article/details/7487761 由于近期正在开发一个通过蓝牙进行数据传递的模块,在参考了有关资料,并详细阅读了Android的官方文档后,总结了Android中蓝牙模块的使用. [更新]之前承诺的蓝牙通讯模块的源码已经放出,详情请点击一下链接 http://blog.csdn.net/gd920129/article/details/7552110 1. 使用蓝牙的响应权限 [html] view plai

在java中的Try Catch块-------------异常处理(2)

1. Try块是什么? Try块是一块可能产生异常的代码块,一个Try块可能跟着Catch块或者Finally块,或者两者. Try块的语义: try{ //statements that may cause an exception } 2. Catch块是什么? 一个Catch块关联一个Try块,如果在Try块中有一个特定类型的异常发生,则响应的Catch块会执行,例如, 如果在Try块中arithmmetic exception发生,那么对应arithmmetic exception的Ca

转:快速掌握一个语言最常用的50%

快速掌握一个语言最常用的50% 现在的开发工作要求我们能够快速掌握一门语言.一般来说应对这种挑战有两种态度:其一,粗粗看看语法,就撸起袖子开干,边查Google边学习:其二是花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作.然而这两种方法都有弊病.第二种方法的问题当然很明显,不仅浪费了时间,偏离了目标,而且学习效率不高.因为没有实际问题驱动的语言学习通常是不牢固不深入的.有的人学着学着成了语言专家,反而忘了自己原本是要解决问题来的.第一种路子也有问题,在对于这种语言的脾气秉

同步块中对象级别的锁和类级别的锁 —— Thread synchronization, object level locking and class level locking

Java supports multiple threads to be executed. This may cause two or more threads to access the same fields or objects. Synchronization is a process which keeps all concurrent threads in execution to be in synch. Synchronization avoids memory consist

快速掌握一门语言的50%(强转)

文章出处,不让转,强转吧.方便看. 正要快速学习python.想试试看如何把学习一门语言规划为一个适合自己的套路.方便以后学习新语言.慢慢修正. 现在的开发工作要求我们能够快速掌握一门语言.一般来说应对这种挑战有两种态度:其一,粗粗看看语法,就撸起袖子开干,边查Google边学习:其二是花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作.然而这两种方法都有弊病.第二种方法的问题当然很明显,不仅浪费了时间,偏离了目标,而且学习效率不高.因为没有实际问题驱动的语言学习通常是不牢固

EchoServer.java (阻塞模式)

package block;import java.io.*;import java.nio.*;import java.nio.channels.*;import java.nio.charset.*;import java.net.*;import java.util.*;import java.util.concurrent.*; public class EchoServer {  private int port=8000;  private ServerSocketChannel s

java程序设计基础篇 复习笔记 第一单元

java语言程序设计基础篇笔记1. 几种有名的语言COBOL:商业应用FORTRAN:数学运算BASIC:易学易用Visual Basic,Delphi:图形用户界面C:汇编语言的强大功能和易学性,可移植性C++:系统软件C#:.netjava:互联网应用程序2. java语言规范:java.sun.com/docs/books/jls 对语言的技术定义javaAPI(Application Program Interface):预定义的类和接口3.javaEE:服务器端的应用程序javaSE: