質問するログイン新規登録

Q&A

解決済

5回答

4657閲覧

マルチスレッドによる計算

snowman

総合スコア25

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/05/18 08:19

0

0

以下のようにマルチスレッドを使ってある数に1を永遠とたすプログラムを組んだのですが、スレッドが切り替わるたびに計算結果がずれてしまいます・・・
原因と解決方法を教えてください・・・

java

1 2public class MessyCounter extends Thread { 3 4 static int counter; 5 private int id; 6 MessyCounter(int id) { 7 this.id = id; 8 } 9 public synchronized void run() { 10 while (true) { 11 System.out.println(id + ":" +counter); 12 counter++; 13 } 14 } 15 16 public static void main(String[] args) { 17 // TODO Auto-generated method stub 18 Thread t[]=new Thread[4]; 19 for(int i=0;i<4;i++){ 20 t[i]=new Thread(new MessyCounter(i)); 21 } 22 t[0].start(); 23 t[1].start(); 24 t[2].start(); 25 t[3].start(); 26 27 } 28 29} 30

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

yohhoy

2017/05/18 13:07

そもそも、どういう結果を望んでいる(望ましい実行結果)のでしょうか?
snowman

2017/05/18 14:03

コンソールに表示されるcounterの値がしっかりと数字順に並ぶのが望ましい実行結果です。
guest

回答の取得に失敗しました

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問