982 |
|
* IllegalMonitorStateException |
983 |
|
*/ |
984 |
|
public void testCannotUnlockOptimisticReadStamps() { |
985 |
< |
Runnable[] actions = { |
986 |
< |
() -> { |
987 |
< |
StampedLock sl = new StampedLock(); |
988 |
< |
long stamp = assertValid(sl, sl.tryOptimisticRead()); |
989 |
< |
sl.unlockRead(stamp); |
990 |
< |
}, |
991 |
< |
() -> { |
992 |
< |
StampedLock sl = new StampedLock(); |
993 |
< |
long stamp = sl.tryOptimisticRead(); |
994 |
< |
sl.unlock(stamp); |
995 |
< |
}, |
985 |
> |
{ |
986 |
> |
StampedLock sl = new StampedLock(); |
987 |
> |
long stamp = assertValid(sl, sl.tryOptimisticRead()); |
988 |
> |
assertThrows(IllegalMonitorStateException.class, |
989 |
> |
() -> sl.unlockRead(stamp)); |
990 |
> |
} |
991 |
> |
{ |
992 |
> |
StampedLock sl = new StampedLock(); |
993 |
> |
long stamp = sl.tryOptimisticRead(); |
994 |
> |
assertThrows(IllegalMonitorStateException.class, |
995 |
> |
() -> sl.unlock(stamp)); |
996 |
> |
} |
997 |
|
|
998 |
< |
() -> { |
999 |
< |
StampedLock sl = new StampedLock(); |
1000 |
< |
long stamp = sl.tryOptimisticRead(); |
1001 |
< |
sl.writeLock(); |
1002 |
< |
sl.unlock(stamp); |
1003 |
< |
}, |
1004 |
< |
() -> { |
1005 |
< |
StampedLock sl = new StampedLock(); |
1006 |
< |
sl.readLock(); |
1007 |
< |
long stamp = assertValid(sl, sl.tryOptimisticRead()); |
1008 |
< |
sl.unlockRead(stamp); |
1009 |
< |
}, |
1010 |
< |
() -> { |
1011 |
< |
StampedLock sl = new StampedLock(); |
1012 |
< |
sl.readLock(); |
1013 |
< |
long stamp = assertValid(sl, sl.tryOptimisticRead()); |
1014 |
< |
sl.unlock(stamp); |
1015 |
< |
}, |
998 |
> |
{ |
999 |
> |
StampedLock sl = new StampedLock(); |
1000 |
> |
long stamp = sl.tryOptimisticRead(); |
1001 |
> |
sl.writeLock(); |
1002 |
> |
assertThrows(IllegalMonitorStateException.class, |
1003 |
> |
() -> sl.unlock(stamp)); |
1004 |
> |
} |
1005 |
> |
{ |
1006 |
> |
StampedLock sl = new StampedLock(); |
1007 |
> |
sl.readLock(); |
1008 |
> |
long stamp = assertValid(sl, sl.tryOptimisticRead()); |
1009 |
> |
assertThrows(IllegalMonitorStateException.class, |
1010 |
> |
() -> sl.unlockRead(stamp)); |
1011 |
> |
} |
1012 |
> |
{ |
1013 |
> |
StampedLock sl = new StampedLock(); |
1014 |
> |
sl.readLock(); |
1015 |
> |
long stamp = assertValid(sl, sl.tryOptimisticRead()); |
1016 |
> |
assertThrows(IllegalMonitorStateException.class, |
1017 |
> |
() -> sl.unlock(stamp)); |
1018 |
> |
} |
1019 |
|
|
1020 |
< |
() -> { |
1021 |
< |
StampedLock sl = new StampedLock(); |
1022 |
< |
long stamp = sl.tryConvertToOptimisticRead(sl.writeLock()); |
1023 |
< |
assertValid(sl, stamp); |
1024 |
< |
sl.writeLock(); |
1025 |
< |
sl.unlockWrite(stamp); |
1026 |
< |
}, |
1027 |
< |
() -> { |
1028 |
< |
StampedLock sl = new StampedLock(); |
1029 |
< |
long stamp = sl.tryConvertToOptimisticRead(sl.writeLock()); |
1030 |
< |
sl.writeLock(); |
1031 |
< |
sl.unlock(stamp); |
1032 |
< |
}, |
1033 |
< |
() -> { |
1034 |
< |
StampedLock sl = new StampedLock(); |
1035 |
< |
long stamp = sl.tryConvertToOptimisticRead(sl.writeLock()); |
1036 |
< |
sl.readLock(); |
1037 |
< |
sl.unlockRead(stamp); |
1038 |
< |
}, |
1039 |
< |
() -> { |
1040 |
< |
StampedLock sl = new StampedLock(); |
1041 |
< |
long stamp = sl.tryConvertToOptimisticRead(sl.writeLock()); |
1042 |
< |
sl.readLock(); |
1043 |
< |
sl.unlock(stamp); |
1044 |
< |
}, |
1020 |
> |
{ |
1021 |
> |
StampedLock sl = new StampedLock(); |
1022 |
> |
long stamp = sl.tryConvertToOptimisticRead(sl.writeLock()); |
1023 |
> |
assertValid(sl, stamp); |
1024 |
> |
sl.writeLock(); |
1025 |
> |
assertThrows(IllegalMonitorStateException.class, |
1026 |
> |
() -> sl.unlockWrite(stamp)); |
1027 |
> |
} |
1028 |
> |
{ |
1029 |
> |
StampedLock sl = new StampedLock(); |
1030 |
> |
long stamp = sl.tryConvertToOptimisticRead(sl.writeLock()); |
1031 |
> |
sl.writeLock(); |
1032 |
> |
assertThrows(IllegalMonitorStateException.class, |
1033 |
> |
() -> sl.unlock(stamp)); |
1034 |
> |
} |
1035 |
> |
{ |
1036 |
> |
StampedLock sl = new StampedLock(); |
1037 |
> |
long stamp = sl.tryConvertToOptimisticRead(sl.writeLock()); |
1038 |
> |
sl.readLock(); |
1039 |
> |
assertThrows(IllegalMonitorStateException.class, |
1040 |
> |
() -> sl.unlockRead(stamp)); |
1041 |
> |
} |
1042 |
> |
{ |
1043 |
> |
StampedLock sl = new StampedLock(); |
1044 |
> |
long stamp = sl.tryConvertToOptimisticRead(sl.writeLock()); |
1045 |
> |
sl.readLock(); |
1046 |
> |
assertThrows(IllegalMonitorStateException.class, |
1047 |
> |
() -> sl.unlock(stamp)); |
1048 |
> |
} |
1049 |
|
|
1050 |
< |
() -> { |
1051 |
< |
StampedLock sl = new StampedLock(); |
1052 |
< |
long stamp = sl.tryConvertToOptimisticRead(sl.readLock()); |
1053 |
< |
assertValid(sl, stamp); |
1054 |
< |
sl.writeLock(); |
1055 |
< |
sl.unlockWrite(stamp); |
1056 |
< |
}, |
1057 |
< |
() -> { |
1058 |
< |
StampedLock sl = new StampedLock(); |
1059 |
< |
long stamp = sl.tryConvertToOptimisticRead(sl.readLock()); |
1060 |
< |
sl.writeLock(); |
1061 |
< |
sl.unlock(stamp); |
1062 |
< |
}, |
1063 |
< |
() -> { |
1064 |
< |
StampedLock sl = new StampedLock(); |
1065 |
< |
long stamp = sl.tryConvertToOptimisticRead(sl.readLock()); |
1066 |
< |
sl.readLock(); |
1067 |
< |
sl.unlockRead(stamp); |
1068 |
< |
}, |
1069 |
< |
() -> { |
1070 |
< |
StampedLock sl = new StampedLock(); |
1071 |
< |
sl.readLock(); |
1072 |
< |
long stamp = sl.tryConvertToOptimisticRead(sl.readLock()); |
1073 |
< |
assertValid(sl, stamp); |
1074 |
< |
sl.readLock(); |
1075 |
< |
sl.unlockRead(stamp); |
1076 |
< |
}, |
1077 |
< |
() -> { |
1078 |
< |
StampedLock sl = new StampedLock(); |
1079 |
< |
long stamp = sl.tryConvertToOptimisticRead(sl.readLock()); |
1080 |
< |
sl.readLock(); |
1081 |
< |
sl.unlock(stamp); |
1082 |
< |
}, |
1083 |
< |
() -> { |
1084 |
< |
StampedLock sl = new StampedLock(); |
1085 |
< |
sl.readLock(); |
1086 |
< |
long stamp = sl.tryConvertToOptimisticRead(sl.readLock()); |
1087 |
< |
sl.readLock(); |
1088 |
< |
sl.unlock(stamp); |
1089 |
< |
}, |
1090 |
< |
}; |
1091 |
< |
|
1092 |
< |
assertThrows(IllegalMonitorStateException.class, actions); |
1050 |
> |
{ |
1051 |
> |
StampedLock sl = new StampedLock(); |
1052 |
> |
long stamp = sl.tryConvertToOptimisticRead(sl.readLock()); |
1053 |
> |
assertValid(sl, stamp); |
1054 |
> |
sl.writeLock(); |
1055 |
> |
assertThrows(IllegalMonitorStateException.class, |
1056 |
> |
() -> sl.unlockWrite(stamp)); |
1057 |
> |
} |
1058 |
> |
{ |
1059 |
> |
StampedLock sl = new StampedLock(); |
1060 |
> |
long stamp = sl.tryConvertToOptimisticRead(sl.readLock()); |
1061 |
> |
sl.writeLock(); |
1062 |
> |
assertThrows(IllegalMonitorStateException.class, |
1063 |
> |
() -> sl.unlock(stamp)); |
1064 |
> |
} |
1065 |
> |
{ |
1066 |
> |
StampedLock sl = new StampedLock(); |
1067 |
> |
long stamp = sl.tryConvertToOptimisticRead(sl.readLock()); |
1068 |
> |
sl.readLock(); |
1069 |
> |
assertThrows(IllegalMonitorStateException.class, |
1070 |
> |
() -> sl.unlockRead(stamp)); |
1071 |
> |
} |
1072 |
> |
{ |
1073 |
> |
StampedLock sl = new StampedLock(); |
1074 |
> |
sl.readLock(); |
1075 |
> |
long stamp = sl.tryConvertToOptimisticRead(sl.readLock()); |
1076 |
> |
assertValid(sl, stamp); |
1077 |
> |
sl.readLock(); |
1078 |
> |
assertThrows(IllegalMonitorStateException.class, |
1079 |
> |
() -> sl.unlockRead(stamp)); |
1080 |
> |
} |
1081 |
> |
{ |
1082 |
> |
StampedLock sl = new StampedLock(); |
1083 |
> |
long stamp = sl.tryConvertToOptimisticRead(sl.readLock()); |
1084 |
> |
sl.readLock(); |
1085 |
> |
assertThrows(IllegalMonitorStateException.class, |
1086 |
> |
() -> sl.unlock(stamp)); |
1087 |
> |
} |
1088 |
> |
{ |
1089 |
> |
StampedLock sl = new StampedLock(); |
1090 |
> |
sl.readLock(); |
1091 |
> |
long stamp = sl.tryConvertToOptimisticRead(sl.readLock()); |
1092 |
> |
sl.readLock(); |
1093 |
> |
assertThrows(IllegalMonitorStateException.class, |
1094 |
> |
() -> sl.unlock(stamp)); |
1095 |
> |
} |
1096 |
|
} |
1097 |
|
|
1098 |
|
static long writeLockInterruptiblyUninterrupted(StampedLock sl) { |