Пока изучал многопоточность заметил что забыл volatile в данном коде:
public class Test {
static int j = 0;
public static void main(String[] args){
th Th = new th();
Thread thread = new Thread(Th);
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(j);
}
public static class th implements Runnable{
public void run(){
for (int i = 0; i < 1000; i++) {
j++;
}
}
}
}
и задался вопросом когда нужно использовать volatile а когда можно и не использовать.