Thread 的实例 和 普通类的实例有什么区别?

wow334 2020-06-25 03:56:49

class MyThread extends Thread {
private int money;
public void run() {
System.out.println("你好中国!");
}

void method1() {

}
}
MyThread mMythread = new MyThread();




1 线程的生命周期 比如进入 死亡状态 (概念:线程执行完毕或者是异常退出,该线程结束生命周期。),难道mMythread 就在内存中被回收了吗?

实际测试的结果是,mMythread .start(); 运行后,run()执行完了,mMythread 这个线程就进入死亡状态的生命周期了,但是mMythread 这个实例在内存中仍然存在。,所以我觉得线程的生命周期和它的实例在内存中存不存在是不同的概念。

2 这个 Thread 的实例 mMythread 和普通类的实例有什么区别?

MyThread是否可以看做除了run方法很特别之外, 它的成员变量(int money),普通方法method1(); 都和普通类一样?


...全文
7045 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
行云边 2020-06-28
  • 打赏
  • 举报
回复
1.Thread类在初始状态(new了没start)和终止状态,如果没人引用就会被垃圾回收。 2.没区别。 总结:java中所有类都一样。要说Thread特殊吧,可能只有一个,就是线程运行的时候即使没任何代码引用他,也不会被垃圾回收(推测,可能虚拟机内部有对运行中的线程引用)。Thread类start之后,使用了操作系统的线程资源。操作系统的线程和Thread类完全是2个概念。Thread类只是通过操作系统的API封装使用了操作系统的线程而已。这跟Socket类跟操作系统socket,File类封装了操作系统的文件概念一样。
梦在明月 2020-06-28
  • 打赏
  • 举报
回复
thread的实例和其他类的实例没有区别 只是做的事情不一样而已 看一下start方法 会去调一个本地方法start0
哎木闹特you 2020-06-26
  • 打赏
  • 举报
回复
我认为,作为线程Mythread,他的生命周期,是到死亡就结束了;但是同样的,他还是一个类的实例,作为一个类,他的生命周期,即回收,应该由垃圾回收器来处理,这应该是不同的任务。就跟生物一样,从出生到死亡,死亡之后没有生命了,但是尸体还在,而实体分解,就交给微生物处理
noWayBinding 2020-06-26
  • 打赏
  • 举报
回复
线程的本质是新起一个线程栈开执行一个函数。因为java一切皆对象,执行线程也得用类包装。你看需要可能线程启动就一个函数作为入口。你也可以认为run是java线程执行的入口。
faith.huan 2020-06-26
  • 打赏
  • 举报
回复
1. 不同概念,线程类实例与线程的关系,有点像程序与进程的关系,并不是进程挂了,程序就丢了。。 2. 和普通类一样没区别

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧