不错的质数算法。你的疑虑是对的,,第一次执行是无效的。 那时候它是0。。  if (prime) {
               primes[count++] = i;
               System.out.println("Found prime: " + i);
           }
这句就有效了,,第二次是2。至于线程嘛,,java的线程很简单,试药runable的都能执行。甚至可以执行多线程,(window可就麻烦多了。)

解决方案 »

  1.   

    帮忙解释下volatile修饰符的作用
      

  2.   

    volatile 是在线程中防止 线程共享的。
    main方法 本身就是通过运行时系统创建的一个线程。
    而线程运行的时候。变量都是由一个线程写入,多个线程读的所以这个程序实际上就是一个多线程(当你用main 运行时系统执行它的时候),
    但这里并没有使用线程同步,如果finished 在线程中,发生了值改变,,那么编译器会得到错误的结果。所以volatile 是在没有线程同步的情况下,防止线程共享,,它会告诉编译器,该域的值在任何时候都可能发生改变。
    关键字,线程共享,线程同步
    (详细内容可以参考  James Gosling 的 The java Programming Language)