创建了两个线程,一个不断进行复杂计算,另一个输出一些字符先start那个进行复杂计算的线程,可是发现似乎CPU就完全被这个线程占用了,而main线程就得不到执行了。于是thread2也得不到start和执行了。
但是书上是说CPU会分时间片让每个线程都得到执行的呀?
请高手指教public class TestInner { public static void main(String[] args) throws Exception {
TestThread1 thread1 = new TestThread1();
thread1.start();
TestThread2 thread2 = new TestThread2();
thread2.start();
}
}class TestThread1 extends Thread {
private volatile double d = 1;
public void run() {
while (true) {
d = d + (Math.PI + Math.E) / d;
System.out.println(d);
}
}
}
class TestThread2 extends Thread {
public void run() {
int i=9;
while (i--!=0) {
System.out.println("ff---------------------");
}
}
}
但是书上是说CPU会分时间片让每个线程都得到执行的呀?
请高手指教public class TestInner { public static void main(String[] args) throws Exception {
TestThread1 thread1 = new TestThread1();
thread1.start();
TestThread2 thread2 = new TestThread2();
thread2.start();
}
}class TestThread1 extends Thread {
private volatile double d = 1;
public void run() {
while (true) {
d = d + (Math.PI + Math.E) / d;
System.out.println(d);
}
}
}
class TestThread2 extends Thread {
public void run() {
int i=9;
while (i--!=0) {
System.out.println("ff---------------------");
}
}
}
d = d + (Math.PI + Math.E) / d;
System.out.println(d);
}
这个循环占了所有吧
而不是怎么实现这个程序并行
你说的我想大家都看得出来吧 :)
因为连TestThread2 thread2 = new TestThread2();
这句都没机会执行请看清楚问题再回答,谢谢配合!