實現進程同步常用的是synchronized,凡是標記爲同步的方法或者對賬只會在同一時間被一個進程使用。
如果是在進行寫入或者更新一類的操作,使用synchronized即可滿足同步操作。
如果是讀寫同步的操作則沒必要互斥,可以支持多個進程同時讀取。這個就用到ReadWriteLock。加鎖方法如下
//寫入方法方法
public static synchronized void set(int data) {
rwl.writeLock().lock();// 取到寫鎖
System.out.println(Thread.currentThread().getName() + "準備寫入數據");
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "寫入" + data);
}
//讀取方法
public static synchronized void get() {
rwl.readLock().lock();
System.out.println(Thread.currentThread().getName() + "準備讀取數據");
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "讀取" + data);
}