新手问题:java多线程交替运行原理(代码如下)
想让2个线程类中的run方法交替运行分别循环输出0-100的数字:1、请问为什么执行的结果并不是交替运行?2、请问代码中t.start();t1.start();这两个语...
想让2个线程类中的run方法交替运行分别循环输出0-100的数字:
1、请问为什么执行的结果并不是交替运行?
2、请问代码中
t.start();
t1.start();
这两个语句是同时运行,还是有先后顺序?
3、cpu 时间片是什么概念?
代码如下:
public class threadtest
{
public static void main(String[] args )
{
compute c = new compute();
compute1 c1 = new compute1();
Thread t = new Thread(c);
Thread t1 = new Thread(c1);
t.start();
t1.start();
}
}
class compute implements Runnable
{
int i =0;
public void run()
{
for(i=0;i<100;i++)
{
System.out.println(i);
}
}
}
class compute1 implements Runnable
{
int i =0;
public void run()
{
for(i=0;i<100;i++)
{
System.out.println("这是compute1:"+i);
}
}
} 展开
1、请问为什么执行的结果并不是交替运行?
2、请问代码中
t.start();
t1.start();
这两个语句是同时运行,还是有先后顺序?
3、cpu 时间片是什么概念?
代码如下:
public class threadtest
{
public static void main(String[] args )
{
compute c = new compute();
compute1 c1 = new compute1();
Thread t = new Thread(c);
Thread t1 = new Thread(c1);
t.start();
t1.start();
}
}
class compute implements Runnable
{
int i =0;
public void run()
{
for(i=0;i<100;i++)
{
System.out.println(i);
}
}
}
class compute1 implements Runnable
{
int i =0;
public void run()
{
for(i=0;i<100;i++)
{
System.out.println("这是compute1:"+i);
}
}
} 展开
1个回答
展开全部
你说的交替运行是什么意思? 如果执行的话 System.out.println(i)和System.out.println("这是compute1:" + i)这两个打印语句是会交替打印的。至于t.start()和t1.start()呢 是按顺序。main方法看作是一个主线程。它依次往下执行,当执行t.start()的时候,开启t线程,此时主线程和t线程同时运行(可能t线程已经开始打印i去了)。然后主线程再接着往下运行执行t1.start()。此时主线程执行完了,t和t1线程同时运行。
至于那个什么时间片就CPU分配给各个程序的时间,每个线程被分配一个时间段来运行,由于时间特别快,你会认为它们是同时进行的,但其实是按时间一个一个来的。
至于那个什么时间片就CPU分配给各个程序的时间,每个线程被分配一个时间段来运行,由于时间特别快,你会认为它们是同时进行的,但其实是按时间一个一个来的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询