62,625
社区成员
发帖
与我相关
我的任务
分享public class EvenGenerator {
private volatile boolean canceled = false;
private int currentEvenValue = 0;
public int next() {
++currentEvenValue;
Thread.yield();
++currentEvenValue;
return currentEvenValue;
}
public void cancel(){
canceled = true;
}
public boolean isCancel(){
return canceled;
}
}
public class EvenChecker implements Runnable{
private EvenGenerator even;
private final int id ;
public EvenChecker(EvenGenerator even,int id){
this.even = even;
this.id = id;
}
public void run() {
while(!even.isCancel()){
int val = even.next();
if(val%2 != 0){
System.out.println(val + " not even");
even.cancel();
}
System.out.println(val + " even");
if(count++ >20){
return;
}
}
}
}
public class Init {
public static void main(String[] args) {
ExecutorService exs = Executors.newCachedThreadPool();
for(int i=0;i<3;i++)
exs.execute(new EvenChecker(new EvenGenerator(),i));
exs.shutdown();
}
}
,感谢大神的回答。谢谢!!public static void test(EvenGenerator gen){
ExecutorService exs = Executors.newCachedThreadPool();
for(int i=0;i<3;i++){
exs.execute(new EvenChecker(gen, 10));
}
exs.shutdown();
}
主函数为
public static void main(String[] args) {
EvenChecker.test(new EvenGenerator());
}
这样就有奇数 ,这是为啥啊????[/quote]
因为test里面共享了一个EvenGenerator[/quote]
嗯,明白了,谢谢。
但是那个结果里为什么会有7 是偶数这样的结果public static void test(EvenGenerator gen){
ExecutorService exs = Executors.newCachedThreadPool();
for(int i=0;i<3;i++){
exs.execute(new EvenChecker(gen, 10));
}
exs.shutdown();
}
主函数为
public static void main(String[] args) {
EvenChecker.test(new EvenGenerator());
}
这样就有奇数 ,这是为啥啊????[/quote]
因为test里面共享了一个EvenGeneratorpublic static void test(EvenGenerator gen){
ExecutorService exs = Executors.newCachedThreadPool();
for(int i=0;i<3;i++){
exs.execute(new EvenChecker(gen, 10));
}
exs.shutdown();
}
主函数为
public static void main(String[] args) {
EvenChecker.test(new EvenGenerator());
}
这样就有奇数 ,这是为啥啊????