永发信息网

Java线程中run和start方法的区别

答案:2  悬赏:70  手机版
解决时间 2021-01-31 02:33
Java线程中run和start方法的区别
最佳答案
Java线程中run和start方法的区别
Thread类中run()和start()方法的区别如下:
run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;
start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程;

package com.ljq.test;

public class ThreadTest {


public static void main(String[] args){
Thread thread=new ThreadDemo();
//第一种
//表明: run()和其他方法的调用没任何不同,main方法按顺序执行了它,并打印出最后一句
//thread.run();

//第二种
//表明: start()方法重新创建了一个线程,在main方法执行结束后,由于start()方法创建的线程没有运行结束,
//因此主线程未能退出,直到线程thread也执行完毕.这里要注意,默认创建的线程是用户线程(非守护线程)
//thread.start();

//第三种
//1、为什么没有打印出100句呢?因为我们将thread线程设置为了daemon(守护)线程,程序中只有守护线程存在的时候,是可以退出的,所以只打印了七句便退出了
//2、当java虚拟机中有守护线程在运行的时候,java虚拟机会关闭。当所有常规线程运行完毕以后,
//守护线程不管运行到哪里,虚拟机都会退出运行。所以你的守护线程最好不要写一些会影响程序的业务逻辑。否则无法预料程序到底会出现什么问题
//thread.setDaemon(true);
//thread.start();

//第四种
//用户线程可以被System.exit(0)强制kill掉,所以也只打印出七句
thread.start();
System.out.println("main thread is over");
System.exit(1);
}

public static class ThreadDemo extends Thread{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("This is a Thread test"+i);
}
}
}
}
全部回答
因为线程是一个应用程序中不同的执行分支,也就是说在一个线程里你是要执行一些命令的,而run()方法里写的代码就是你在这个线程里要执行的命令;而start()方法用于启动线程,当你调用线程的start()方法后,你就可以认为这个线程的run()方法里的代码开始执行了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
青岛哪里有学平面设计,
【人字加两笔是什么字《15个》要有15个啊!】
绞股蓝的土名叫什么
、为什么不能暴饮暴食:由于大
滑县酒便利店怎么去啊,我要去那办事
器饰的意思是什么啊?知道的请说下!
南宁邕宁哪个初中比较好
南召集地址有知道的么?有点事想过去
【深海潜水服】如果潜水员不穿潜水服潜到深海
为什么直流氩弧焊机不能焊接铝?
为什么将数据移到sd卡后,东西都没有了,怎么恢
峻絶的意思是什么啊?知道的请说下!
Stop:0x0000007b(0xf894c528.0&#
Arduino不支持BYTE怎么办?怎么想电脑传输
苹果7转接线可以用U盾吗
推荐资讯
凤亭便利超市地址在哪,我要去那里办事
1982年拉菲古堡红萄酒过期吗
MO&Co.(天佑城店)地址有知道的么?有点事
翻译can you give me information about days
中山古镇到广州省站 直达车
张飞他爸叫什么?
为什么我玩《时光之刃》故事模式第一关打完了
停车场(建设二路)(建设二路与青年路交叉口西
监临自盗的意思是什么啊?知道的请说下!
北京市力迈学校地址在什么地方,我要处理点事
中国福利彩票(光明路销售厅)(南皮镇光明中路1
香精是什么味到,与芦荟清香味怎样辨别
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?