More Related Content Similar to 並行処理プログラミングの深淵~Java仮想マシン仕様 スレッドとロック~ Similar to 並行処理プログラミングの深淵~Java仮想マシン仕様 スレッドとロック~ (20) More from Kazuhiro Eguchi More from Kazuhiro Eguchi (8) 並行処理プログラミングの深淵~Java仮想マシン仕様 スレッドとロック~11. private final Object lock = new Object();
private List<String> list;
public void add(String text){
synchronized (lock){
listadd(text);
}
}
12. private final Object lock = new Object();
private List<String> list;
public void add(String text){
synchronized (lock){
listadd(text);
}
}
13. private final Object lock = new Object();
private List<String> list;
public void add(String text){
synchronized (lock){
listadd(text); lock
}
}
16. private final Object lock = new Object();
private List<String> list;
public String get(int index){
synchronized (lock){
return list.get(index);
}
}
17. private final Object lock = new Object();
private List<String> list;
public String get(int index){
synchronized (lock){
return list.get(index); list
}
}
18. private final Object lock = new Object();
private List<String> list;
public void add(String text){
synchronized (lock){
list.add(text);
}
}
public String get(int index){
return list.get(index);
}
19. private final Object lock = new Object();
private List<String> list;
public void add(String text){
synchronized (lock){
list.add(text);
list
}
}
IllegalArgumentException
public String get(int index){
return list.get(index);
}
20. private final Object lock = new Object();
private List<String> list;
public void add(String text){
synchronized (lock){
list.add(text);
list
}
}
IllegalArgumentException
public String get(int index){
return list.get(index);
}
57. private final Object lock = new Object();
private List<String> list;
private String get(int index){
synchronized (lock){
return list.get(index);
}
}
58. private final Object lock = new Object();
private List<String> list;
private String get(int index){
synchronized (lock){
return list.get(index); list
}
}
65. volatile 3
volatile (reordering)
private int num = 0;
private volatile boolean initialized;
public void run(){
num = 100;
initialized = true;
}
66. volatile 3
volatile (reordering)
private int num = 0;
private volatile boolean initialized;
public void run(){
num = 100; num
initialized = true;
}
Editor's Notes \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n