共享锁【S锁】
又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
排他锁【X锁】
又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修改A。
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
public class Main1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//注意LinkedHashMap的使用,按输入顺序顺序输出
Map<String,Integer> map = new LinkedHashMap<>();
while (scanner.hasNext()) {
String s1 = scanner.next();
int a = scanner.nextInt();
//注意\的转义
String[] arr = s1.split("\\\\");
String s2 = arr[arr.length-1];
if(s2.length()>16) {
s2 = s2.substring(s2.length()-16);
}
String key = s2+" "+a;
//containsKey的使用
if(map.containsKey(key)) {
map.put(key,map.get(key)+1);
}else {
map.put(key,1);
}
}
int count = 0;
//通过Map的Key遍历的使用
//输出最后8位的方法
for (String x:map.keySet()) {
count++;
if(count>(map.keySet().size()-8)) {
System.out.println(x+" "+map.get(x));
}
}
}
}