java 之 Lock 同步锁学习示例

原创 2012年03月21日 16:37:20
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;


public class LockTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		init();
	}
	
	private static void init() {
		final Outputer outputer = new Outputer();
		
		new Thread(new Runnable() {

			@Override
			public void run() {
				while(true) {
					try {
						Thread.sleep(10);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					
//					outputer.output2("1111");
					outputer.output("1111");
				}
			}
			
		}).start();
		
		new Thread(new Runnable() {

			@Override
			public void run() {
				while(true) {
					try {
						Thread.sleep(10);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					
//					outputer.output2("2222");
					outputer.output("2222");
				}
			}
			
		}).start();
	}

}

/**
 * Lock 更加面向对象
 * @author ETHAN
 *
 */
class Outputer {
	
	Lock lock = new ReentrantLock();
	
	public void output(String name) {
		int len = name.length();
		//上锁,一定要释放
		lock.lock();
		try {
			for(int i=0;i<len;i++) {
				System.out.print(name.charAt(i));
			}
			
			System.out.println();
		} finally {
			//释放
			lock.unlock();
		}
		
	}

	//不加锁
	public void output2(String name) {
		int len = name.length();
		
			for(int i=0;i<len;i++) {
				System.out.print(name.charAt(i));
			}
			
			System.out.println();
		
	}
	
	public void output3(String name) {
		int len = name.length();
		synchronized (Outputer.class) {
			for(int i=0;i<len;i++) {
				System.out.println(name.charAt(i));
			}
			
			System.out.println();
		}
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java线程(八):锁对象Lock-同步问题更完美的处理方式

Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我...
  • ghsau
  • ghsau
  • 2012-04-14 22:29
  • 88759

Java实现生产者与消费者(四)(多生产者与多消费者使用lock同步锁)

在jdk1.5 以后使用Lock 代替synchronized实现同步锁。synchronized一个锁只有一个监视器,而Lock锁可以有多个监视器,这样一个Lock锁上可以获取两组监视器分别监视生产...

Java线程(七):锁对象Lock-同步问题更完美的处理方式

Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我...

java线程同步之Lock锁

Java并发编程:Lock   在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurren...

Java同步锁Lock的使用

Java同步锁Lock的使用

Java线程(八):锁对象Lock-同步问题更完美的处理方式

原文地址:http://blog.csdn.net/ghsau/article/details/7461369    Lock是java.util.concurrent.locks包下的接口,L...

Java并发(四):Callable和Future、锁对象Lock-完美解决同步方式

Callable和FutureCallable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执...

Java线程(八):锁对象Lock-同步问题更完美的处理方式

Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我...

Java线程(八):锁对象Lock-同步问题更完美的处理方式

http://blog.csdn.net/ghsau/article/details/7461369 关注点:读写锁ReadWriteLock         Lo...

Java线程(七):锁对象Lock-同步问题更完美的处理方式

上一篇:Java线程(六)         Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)