输出:
reader1:read action for 1 seconds-Initiation reader3:read action for 1 seconds-Initiation writer1:write action for 2 seconds reader2:read action for 1 seconds-1111 reader4:read action for 1 seconds-1111 reader3:read action for 1 seconds-1111 reader1:read action for 1 seconds-1111 reader4:read action for 1 seconds-1111 reader2:read action for 1 seconds-1111 writer1:write action for 2 seconds reader4:read action for 1 seconds-2222 reader1:read action for 1 seconds-2222 reader3:read action for 1 seconds-2222 reader2:read action for 1 seconds-2222 |
4、总结
Lock接口替代synchronized
Lock接口可以比sychronized提供更广泛的锁定操作,可以提供多把不同的锁,且锁之间互不干涉。
Lock接口提供lock()与unlock()方法,使用明确调用来完成同步的,OO思想好于前者。
Lock可以自由操控同步范围(scope)。
Lock接口支持nested lock(嵌套锁定),并提供了丰富的api。
Lock接口提供了tryLock()方法,支持尝试取得某个object lock。