これはばかげた質問であることは知っていますが、これを修正する方法がわかりません。これまでスレッドを使用した経験があまりありません。
以下では、最初にコマンド output.write(mylist) を 10 秒ごとに実行するタイマーを作成する必要があります。このタイマーは、単に mylist の内容を出力します。
次に、私が持っている約 3 つのリストをループし、それぞれについて、リスト内の次の単語を取得してループし続けるスレッドを作成します。注意: これは削除されたバージョンであり、完全ではないため、arraylist / list についてコメントせずに、エラー自体についてコメントしてください。
同時変更の例外が頻繁に発生しますが、実行しようとすると常に発生するわけではありませんoutput.write()
。これは、他のスレッドの1つが現在何かを保存しているためだとmylist
思いますか? これを修正するにはどうすればよいですか?
Runnable timer = new Runnable() {
public void run() {
try {
while (true) {
Thread.sleep(10000);
output.write(mylist);
}
} catch (InterruptedException iex) {}
}
};
Thread timerThread = new Thread(timer);
timerThread.start();
for (final ValueList item : list) {
Runnable r = new Runnable() {
public void run() {
try {
while (true) {
char curr = item.getNext();
mylist.addWord(curr);
}
} catch (InterruptedException iex) {}
}
};
Thread thr = new Thread(r);
thr.start();
}
}