不错的质数算法。你的疑虑是对的,,第一次执行是无效的。 那时候它是0。。 if (prime) {
primes[count++] = i;
System.out.println("Found prime: " + i);
}
这句就有效了,,第二次是2。至于线程嘛,,java的线程很简单,试药runable的都能执行。甚至可以执行多线程,(window可就麻烦多了。)
primes[count++] = i;
System.out.println("Found prime: " + i);
}
这句就有效了,,第二次是2。至于线程嘛,,java的线程很简单,试药runable的都能执行。甚至可以执行多线程,(window可就麻烦多了。)
main方法 本身就是通过运行时系统创建的一个线程。
而线程运行的时候。变量都是由一个线程写入,多个线程读的所以这个程序实际上就是一个多线程(当你用main 运行时系统执行它的时候),
但这里并没有使用线程同步,如果finished 在线程中,发生了值改变,,那么编译器会得到错误的结果。所以volatile 是在没有线程同步的情况下,防止线程共享,,它会告诉编译器,该域的值在任何时候都可能发生改变。
关键字,线程共享,线程同步
(详细内容可以参考 James Gosling 的 The java Programming Language)