重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、start()方法来启动线程,真正实现了多线程枯激运行,这时无需等待。
创新互联建站是少有的网站设计、成都网站建设、营销型企业网站、成都微信小程序、手机APP,开发、制作、设计、卖友情链接、推广优化一站式服务网络公司,成立于2013年,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评
run方法体代码执行完毕而直接继续执行下面的代码;通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。
通过Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止,而CPU再运行其它线程。
2、run()方法当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码;
而如果直接用run方法,这只是调用一个方法而已,程序中依然只有主线程--这一个线程唯猛,其程序执行路径还是只有一条,这样就没有达到写线程的目的。
3、调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。
4、这两个方法需要把并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void.。
扩展资料:
用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。
通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行没山袜run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。
run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。
参考资料来源:百度百科-java基础
当一个线程调空衫用它的start()方岩亏郑法后,虚拟机就会去调用这个线粗颂程中的run()方法。
如myThread是一个线程对象,调用myThread.start();后,当CPU轮到这个线程使用时,虚拟机就会去调用这个线程的run()方法。
分类: 电脑/网络 程序设计 其他编程语言
问题描述:
public PrimeList(int numPrimes,int numDigits,boolean runInBackground)
{
primeFound=new ArrayList(numPrimes);
this.numPrimes=numPrimes;
this.numDigits=numDigits;
if(runInBackground)
{
Thread t=new Thread(this);
t.setPriority(Thread.MIN_PRIORITY);
t.start();
}
else
{
run();
}
}
public void run()
{
BigInteger start=Primes.random(numDigits);
for(int i=0;inumPrimes;i++)
{
start=Primes.nextPrime(start);
synchronized(this)
{
primeFound.add(start);
}
}
该程序怎么执行?t.start()调用run()方法,而下面返饥的else{run();}此处run()调用哪里?不是if...else相互矛盾吗?其结果不都是执行run()方法?
解析:
调用的是同一个run方法,但是在Thread中,会新建一个线程执行这局卜段代码,不会影响当前线程漏腊返的工作。否则run执行起来,当前的进程就阻塞勒。
上面悔团几个说的也是我要说的几点,
run() 方法是不用参数的,不用传他就会知道。
因为线程里边大多都是死循环,和主线程同步运行。(当然实际不是这样的。但可以这样理解)
比如:定义一个用于转换状态的属性。
static final int STATE_GAME_RUN = 0;
static final int STATE_GAME_OVER = 1;
int state;
run 方法里边有这亩首样的:
switch(state)
case STATE_GAME_RUN :
System.out.println("游戏进行中");
break;
case STATE_GAME_OVER:
System.out.println("游戏结束");
break;
当主线程里边state改变时,线程里边马上就会知道,还迅前数用传