新手问题: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);
}
}

}
展开
 我来答
神话ZXCV
2015-02-28 · 超过33用户采纳过TA的回答
知道答主
回答量:111
采纳率:0%
帮助的人:63.8万
展开全部
你说的交替运行是什么意思? 如果执行的话 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分配给各个程序的时间,每个线程被分配一个时间段来运行,由于时间特别快,你会认为它们是同时进行的,但其实是按时间一个一个来的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式