简单java程序中出现的问题,Java中简单多线程程序的奇怪问题

我刚开始玩多线程编程.我希望我的节目交替显示字符’ – ‘和”,但事实并非如此.我的任务是使用synchronized关键字.到目前为止我有:

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));

}

}

}

编辑:我也在run方法中测试Thread.sleep而不是循环.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值