当前位置:  技术问答>java相关

重金悬赏,java多线程高手请进

    来源: 互联网  发布时间:2015-06-17

    本文导语:  我使用的是jdk1.4。自己创建了一个继承了Thread的类,该线程启动正常,运行正常,只是不知道应该怎样结束线程的运行。以前版本中的.stop()方法在JDK1.4中已经作废,而1.4提供的.destroy()方法又没有实现。请问我应该采...

我使用的是jdk1.4。自己创建了一个继承了Thread的类,该线程启动正常,运行正常,只是不知道应该怎样结束线程的运行。以前版本中的.stop()方法在JDK1.4中已经作废,而1.4提供的.destroy()方法又没有实现。请问我应该采用怎样的方式结束这个线程的运行。请高手指教!

|
to hccpro(hcc) :
Thread t = this;
t = null;
确实没用也,因为垃圾回收只有当对象没有被引用时才起作用。
现在我们看看你的过程:
//执行这段前 THIS 对象有this 1个引用
Thread t = this;
//这时,有2个变量引用对象 ,t 和this 
t = null;
// 这时还剩有一个变量引用对象,就是this

所以这段程序不起任何作用

一点拙见





|
设个标志
在run()里用while或if判断就行了嘛
think in java 和 core java 都这样做的

|
楼上几位说的都很有道理,在RUN方法的循环中用一个标记,当退出循环,线程自然就停止了。如:

.....
public void run(){
  while(isstop){
     .....
  }
}
......

public void stop(){
  isstop=false;
}

我觉得这样控制一个线程是比较好的,到目前为止我都没有遇见过什么问题。

|
这些都不是很好的办法,当你用".stop()"方法时,系统会给出一个警告的。
  其实,线程好多都是用来反复的做某件事的,因此通常在"run()"方法中加入这样的一句:while(true){},你只要将这句改为:while(goOn){}即可,goOn是你自己定义的一个boolean变量。当你想要结束这个线程,只要将goOn赋值为false,循环就会退出,线程自然结束了。试试看,很灵的。

|
我认为,当run()方法结束的时候,线程就结束了,我在学习think in java的时候就是这样认为的,而且我在实际的开发中也是这样使用的,所以可以使用两种方法来结束线程,一个return()返回,以及while(can_do){can_do=false}都可以。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 重金求《程序员大本营Java版》
  • 重金酬谢
  • 重金急救Neighbour table overflow
  • linux下ANT问题,大虾帮助,重金感谢
  • 重金求Linux 系列驱动开发
  • 重金求解
  • 重金求解,redhat7.2下安装apache1.3.27时提示bad interperter的问题,和perl有关,如何解决?
  • 重金求助,如何读写外部存储器
  • 关于开发代码的EJB容器——欢迎大家参与讨论(重金200分,看相应人数分值还会有所增加!)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3