Topic: [求助]好像线程的启动可以直接使用run()?

  Print this page

1.[求助]好像线程的启动可以直接使用run()? Copy to clipboard
Posted by: boper
Posted on: 2004-09-13 17:38

书上说为了启动一个线程,要调用它的start()方法,来进行初始化,
但我直接调用了run()方法,线程也能正常使用,没有发现什么异常
请问这是什么原因,
start方法是做什么用的?
谢谢!

2.Re:[求助]好像线程的启动可以直接使用run()? [Re: boper] Copy to clipboard
Posted by: littledeer1974
Posted on: 2004-09-14 10:30

我并没有在我的程序中直接使用过run()所以不知道那会有什么样的后果(是不值得推荐的方法)

但是通常在程序中开始一个[线程]必须用以下的方式(并非仅次一种)


class yourclass implements Runnable{
//
yourclass(){
Thread your_thread=new Thread(this);
//
your_thread.start();
}

public void run(){
//你的线程工作的地方(你的代码)
}
//
}


其实在你生成一个新的Thread并启动的时候在Start()中做的就是调用run()让我看看SUN的原程序就会一目了然的


public synchronized native void start();

/**
* If this thread was constructed using a separate
* <code>Runnable</code> run object, then that
* <code>Runnable</code> object's <code>run</code> method is called;
* otherwise, this method does nothing and returns.
* <p>
* Subclasses of <code>Thread</code> should override this method.
*
* @see java.lang.Thread#start()
* @see java.lang.Thread#stop()
* @see java.lang.Thread#Thread(java.lang.ThreadGroup,
* java.lang.Runnable, java.lang.String)
* @see java.lang.Runnable#run()
*/
public void run() {
  if (target != null) {
   target.run();
  }
}


所以说Start()就是调用run()并开始你的线程的,不知道这个回答能否让你满意呢,文中有不当之处请同行门指点

3.Re:[求助]好像线程的启动可以直接使用run()? [Re: boper] Copy to clipboard
Posted by: kjjx
Posted on: 2004-09-14 18:44

非也!直接调用不会开启一个新的线程,只会视为一个普通的方法调用。

4.Re:[求助]好像线程的启动可以直接使用run()? [Re: boper] Copy to clipboard
Posted by: kiffen
Posted on: 2004-09-16 23:00

start()方法可以判断你传入的Runnable参数是否为空,唯恐两种方法一样,布控的话你调用的是空方法


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923