java一个小程序问题(多线程问题,俺是一个初学者)
现在在学多线程,下面这个程序运行之后不是我想要的结果,为什么?程序如下:packagethreadtest;classTestThreadsextendsThread{p...
现在在学多线程,下面这个程序运行之后不是我想要的结果,为什么?程序如下:
package threadtest;
class TestThreads extends Thread{
public void run(){
for(int i=0;i<=4;i++)
System.out.println("test is operating!");
}
}
public class TestThread {
public static void main(String[] args) {
new TestThreads().start();
for(int i=0;i<=4;i++){
System.out.println("main is operating!");
}
}
}
我理想的结果是test is operating!和main is operating!"交错,结果感觉还是单线程的运行结果,不过main is operating!"先运行了,想知道为什么不是交错运行?求各位大神解答,在线等,谢谢! 展开
package threadtest;
class TestThreads extends Thread{
public void run(){
for(int i=0;i<=4;i++)
System.out.println("test is operating!");
}
}
public class TestThread {
public static void main(String[] args) {
new TestThreads().start();
for(int i=0;i<=4;i++){
System.out.println("main is operating!");
}
}
}
我理想的结果是test is operating!和main is operating!"交错,结果感觉还是单线程的运行结果,不过main is operating!"先运行了,想知道为什么不是交错运行?求各位大神解答,在线等,谢谢! 展开
5个回答
展开全部
你把数字改大点就好了
不过不会一个一个交错的
这个设计cpu时间片的问题
应该是A线程执行一段时间 然后主线程执行一段时间交互的
即使是双核处理器 两个线程同时运行 也会有效率不同的问题的
不过不会一个一个交错的
这个设计cpu时间片的问题
应该是A线程执行一段时间 然后主线程执行一段时间交互的
即使是双核处理器 两个线程同时运行 也会有效率不同的问题的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个很难交错运行的,主要原因是在多线程运行的时候,我们不能控制操作系统到底是调用哪一个线程,可能出现的结果有多种。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是cup智能分配问题,你这数字太小体现不出来,你换成1000甚至10000看看就可以发现它的分配规律并不是每个线程轮流来的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是主线程和副线程同时运行
你输出的太少了 只有4个
把 for(int i = 0 ; i<4; i++) 改成while(true)试试
你输出的太少了 只有4个
把 for(int i = 0 ; i<4; i++) 改成while(true)试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
循环里加上
Thread.sleep(1);
class TestThreads extends Thread{
public void run(){
for(int i=0;i<=4;i++){
try {
System.out.println("test is operating!");
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class TestThreads2 extends Thread{
public void run(){
for(int i=0;i<=4;i++)
try {
System.out.println("test2 is operating!");
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class TestThread{
public static void main(String[] args) {
new TestThreads().start();
new TestThreads2().start();
}
Thread.sleep(1);
class TestThreads extends Thread{
public void run(){
for(int i=0;i<=4;i++){
try {
System.out.println("test is operating!");
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class TestThreads2 extends Thread{
public void run(){
for(int i=0;i<=4;i++)
try {
System.out.println("test2 is operating!");
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class TestThread{
public static void main(String[] args) {
new TestThreads().start();
new TestThreads2().start();
}
追问
能告诉我加在哪儿么?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询