package newpackage;
import java.util.logging.Level;
import java.util.logging.Logger;
class test {
public int in = 0;
void helper() {
Thread t1 = new Thread(
()
-> {
add();
}
);
Thread t2 = new Thread(
()
-> {
add();
}
);
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
}
void add() {
for (int i = 0; i < 40; i++) {
in += i;
try {
Thread.sleep(50);
} catch (InterruptedException ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
public class Main {
public static void main(String[] args) {
test a = new test();
a.helper();
System.out.println(a.in);
}
}
То, что я хочу, - это запустить один и тот же метод из разных потоков одновременно.Многопоточность по одному и тому же методу в java
Но приведенный выше код не дает правильного результата. Он дает выход меньше 1560 (780 + 780). Как я могу это достичь?
Заранее спасибо.
«Правильный результат», каков ваш ожидаемый результат и каков ваш наблюдаемый результат? Кроме того, ваш метод ничего не делает - пожалуйста, напишите реальный код, код, который мы можем скомпилировать, протестировать и изменить. –
«не дает правильного результата». Я полагаю, вы имеете в виду, что он не дает ожидаемого результата, потому что он определенно делает то, что говорит спецификация Java. Как вы думаете, что он должен делать, что он делает? –
@AndyTurner извините. я сделал это ради простоты. теперь отредактирован. –