同步鎖(Lock)

MyLock.java

package demo7;

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

public class MyLock implements Runnable{
	int poll = 100;
	Object object = new Object();
	
	//聲明lock鎖
	Lock lock = new ReentrantLock();
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while (true) {
//			synchronized (MyLock.class) {
				lock.lock();//加鎖
				if (poll>0) {
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.out.println(Thread.currentThread().getName()+"正在出售第"+(poll--)+"張票");
				}
				lock.unlock();//釋放鎖
//			}
		}
	}
}

TestMyLock.java

package demo7;

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

public class MyLock implements Runnable{
	int poll = 100;
	Object object = new Object();
	
	//聲明lock鎖
	Lock lock = new ReentrantLock();
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while (true) {
//			synchronized (MyLock.class) {
				lock.lock();//加鎖
				if (poll>0) {
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.out.println(Thread.currentThread().getName()+"正在出售第"+(poll--)+"張票");
				}
				lock.unlock();//釋放鎖
//			}
		}
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章