JAVA中run()问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 04:04:21
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;i<numPrimes;i++)
{
start=Primes.nextPrime(start);
synchronized(this)
{
primeFound.add(start);
}
}
该程序怎么执行?t.start()调用run()方法,而下面的else{run();}此处run()调用哪里?不是if...else相互矛盾吗?其结果不都是执行run()方法?

调用的是同一个run方法,但是在Thread中,会新建一个线程执行这段代码,不会影响当前线程的工作。否则run执行起来,当前的进程就阻塞勒。

调用的是同一个run()
if判断是否将线程放在后台执行,就是将其优先级置为最低
else是把该线程放在前台执行