私はマルチスレッドプログラミングを開始しています。私は私のプログラムに文字 ' - 'と '+'を交互に表示したいですが、そうではありません。私の仕事はというキーワードを使用することです。限り私が持っている:Javaでの単純なマルチスレッドプログラムでの奇妙な問題
class FunnyStringGenerator{
private char c;
public FunnyStringGenerator(){
c = '-';
}
public synchronized char next(){
if(c == '-'){
c = '+';
}
else{
c = '-';
}
return c;
}
}
class ThreadToGenerateStr implements Runnable{
FunnyStringGenerator gen;
public ThreadToGenerateStr(FunnyStringGenerator fsg){
gen = fsg;
}
@Override
public void run() {
for(int i = 0; i < 10; i++){
System.out.print(gen.next());
}
}
}
public class Main{
public static void main(String[] args) throws IOException {
FunnyStringGenerator FSG = new FunnyStringGenerator();
ExecutorService exec = Executors.newCachedThreadPool();
for(int i = 0; i < 20; i++){
exec.execute(new ThreadToGenerateStr(FSG));
}
}
}
EDIT:私も代わりにrunメソッドでfor
ループをThread.sleep
をテストします。
なぜかダウン投票を教えてください。 –