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)未満です。どのように達成できますか?
ありがとうございます。
「正しい結果」、予想される出力は何ですか?また、観測される出力は?また、あなたのメソッドは何もしません - 実際のコード、私たちがコンパイル、テスト、修正できるコードを投稿してください。 –
"適切な結果が得られない"私は、あなたが期待している結果が得られないということを意味していると推測しています。あなたはそれが何をすべきだと思いますか、代わりに何をしますか? –
@AndyTurner申し訳ありません。私は簡単にするためにそうしました。今編集されました。ありがとう。 –