java 线程基础问题!输出结果为什么不是一直出现Hello world!后面会乱序呢!出现world hello!
publicclassTheThreadextendsThread{@Overridepublicvoidrun(){inti=0;while(i<50){try{Thr...
public class TheThread extends Thread {
@Override
public void run() {
int i = 0;
while(i<50){
try {
Thread.sleep(3000); //线程休眠
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(" world!"); //输出字符串
i++;
}
}
}
public class Test {
public static void main(String[] args) throws InterruptedException {
TheThread tt = new TheThread(); //实例化线程
tt.start(); //启动线程
int k = 0;
while(k<50)
{
Thread.sleep(3000); //线程休眠
System.out.print(" hello"); //输出字符串
k++;
}
}
} 展开
@Override
public void run() {
int i = 0;
while(i<50){
try {
Thread.sleep(3000); //线程休眠
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(" world!"); //输出字符串
i++;
}
}
}
public class Test {
public static void main(String[] args) throws InterruptedException {
TheThread tt = new TheThread(); //实例化线程
tt.start(); //启动线程
int k = 0;
while(k<50)
{
Thread.sleep(3000); //线程休眠
System.out.print(" hello"); //输出字符串
k++;
}
}
} 展开
3个回答
展开全部
亲,是这样的一个main线程,一个tt线程这两个线程之间是相互竞争的,他们各自有各自的任务,只要jvm有空就会执行他们中间的任何一个,当然如果在sleep就不能执行了.
public class TheThread extends Thread {
@Override
public void run() {
int i = 0;
while (i < 10) {
try {
Thread.sleep(150); //线程休眠
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print("world!\n"); //输出字符串
i++;
}
}
public static void main(String[] args) throws InterruptedException {
TheThread tt = new TheThread(); //实例化线程
tt.start(); //启动线程
int k = 0;
while (k < 10) {
Thread.sleep(30); //线程休眠
System.out.print("hello\n"); //输出字符串
k++;
}
}
}
输出结果
hello
hello
hello
hello
hello
world!
hello
hello
hello
hello
world!
hello
world!
world!
world!
world!
world!
world!
world!
world!
public class TheThread extends Thread {
@Override
public void run() {
int i = 0;
while (i < 10) {
try {
Thread.sleep(150); //线程休眠
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print("world!\n"); //输出字符串
i++;
}
}
public static void main(String[] args) throws InterruptedException {
TheThread tt = new TheThread(); //实例化线程
tt.start(); //启动线程
int k = 0;
while (k < 10) {
Thread.sleep(30); //线程休眠
System.out.print("hello\n"); //输出字符串
k++;
}
}
}
输出结果
hello
hello
hello
hello
hello
world!
hello
hello
hello
hello
world!
hello
world!
world!
world!
world!
world!
world!
world!
world!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当两个线程启动后,时间小到纳秒级时cup也是一个线程一个线程的运行,一个线程运行几纳秒另一个再运行几纳秒,只是我们看起来好像是两个线程在一起运行,所以有可能tt线程多运行几纳秒那么就是先打印world
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |