`
阿尔萨斯
  • 浏览: 4181376 次
社区版块
存档分类
最新评论

线程锁Lock

 
阅读更多

Lock 相当于 当前对象的 Synchronized

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/*
 * Lock lock = new ReentrantLock();
 * lock.lock();   lock.unLock();
 * 类似于 synchronized,但不能与synchronized 混用
 */
public class LockTest {
	public static void main(String[] args) {
		final Outer outer = new LockTest().new Outer();
		new Thread(new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				while (true) {
					outer.out1("zhangxiaoxiao");
					outer.out2("lihuoming");
				}
			}

		}).start();
		new Thread(new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				while (true) {
					outer.out1("zhangxiaoxiao");
					outer.out2("lihuoming");
				}
			}

		}).start();

	}
	class Outer {
		Lock lock = new ReentrantLock();
		void out1(String name) {
			lock.lock();
			int len = name.length();
			for (int i = 0; i < len; i++) {
				System.out.print(name.charAt(i));
			}
			System.out.println();
			lock.unlock();
		}
		void out2(String name) {
			lock.lock();
			int len = name.length();
			for (int i = 0; i < len; i++) {
				System.out.print(name.charAt(i));
			}
			System.out.println();
			lock.unlock();
		}
	}
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics