У меня есть следующий класс:Как проверить, если статический метод потокобезопасен
public class MyTestThreadStatic {
private static int myNum;
private MyTestThreadStatic() { // private constructor
}
public static void setMyNum(int val) {
myNum = val;
}
public static int addOne() {
return myNum + 1;
}
.....
code block {
//thread 1 at t0
... some code to create a thread to call static class
System.out.println("val=" + MyTestThreadStatic.addOne());
... some other code to create a thread to call static class
//thread 2 at t0
MyTestThreadStatic.setMyNum(200);
System.out.println("val=" + MyTestThreadStatic.addOne());
}
//stack created?
В t0 (время 0), два потока вызова функции аддоне. Будет ли это работать так, как ожидалось? Будет ли это работать, потому что были созданы два стека? Я бы хотел проверить это и посмотреть на Thread и Runnable, но я не вижу пути, поскольку у меня нет статических методов и требуется экземпляр объекта.
Вы понимаете, что здесь у вас нет двух потоков, верно? –
Вы понимаете, что 'addOne()' не увеличивает значение, оно просто добавляет 1 к тому, что вы в последний раз устанавливали. например если вы вызовете 100 раз, он будет возвращать одинаковое значение каждый раз. –
Да. Пробовал создавать потоки, но не мог понять. – paulj