<<java并发编程实践>>之复合操作加锁策略
public class UnSafeOperation { //直接使用this加锁public synchronized String get(Vector<String> vector) {if (vector.isEmpty()) {return null;}int index = vector.size() - 1;return vector.get(index);} //对vector加锁public String get1(Vector<String> vector) {synchronized (vector) {if (vector.isEmpty()) {return null;}int index = vector.size() - 1;return vector.get(index);}}public synchronized void delete(Vector<String> vector) {int index = vector.size() - 1;vector.remove(index);}public synchronized void delete1(Vector<String> vector) {synchronized (vector) {int index = vector.size() - 1;vector.remove(index);}}public static void main(String[] args) {final Vector<String> vector = new Vector<String>();vector.add("chneliang");final UnSafeOperation unSafe = new UnSafeOperation();new Thread() {public void run() {unSafe.get(vector);}}.start();unSafe.delete(vector);}}