みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

JAVAのマルチスレッドの共有変数についての質問

JAVAのマルチスレッドの共有変数についての質問です。
スレッドを2つ作ってその2つのスレッド共有の配列を作りたいのですがどうすれば良いのでしょうか。
コードは以下のとおりです。
public class testes extends Thread {
int n;
int a[]={10,10};

public testes(int n){
this.n = n;
}

public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
testes t1 = new testes(0);
testes t2 = new testes(1);
t1.start();
t2.start();
}

public void run(){
a[n] =n;
System.out.println(a[0]+","+a[1]);
}
}

実行すると(0,10)もしくは(10,1)が表示されます。
このとき(0,1)と表示するにはどうすれば良いのでしょうか。

投稿日時 - 2015-08-26 19:29:21

QNo.9036996

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

共有変数にしたいだけならaがインスタンスメンバになってるのをクラスメンバにすればいいだけですけど、それをしたからといって "(0,1)" と出力されるとは限りません。

・aをクラスメンバにする
・a[0] = 0, a[1] = 1 の状態になるまで待った上で出力する

投稿日時 - 2015-08-26 19:53:12

あなたにオススメの質問