A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

java是多线程编程语言,所以java运行时也是以多线程的方式运行的,
那么主方法也就是一个线程,
但是对于一个java程序来说,
一个java程序运行至少会启动几个线程呢?

5 个回复

倒序浏览
两个:主线程、垃圾回收线程
回复 使用道具 举报
杨盼 发表于 2012-3-17 13:43
两个:主线程、垃圾回收线程

嗯 ,两个是最基本的,可否把每一个类都认为是一个线程

每new一个类的实例,就相当于产生了一个线程,而这个类不一定是继承了Thread ?

莫非必须集成Thread和实现了Runnable的类才能扯上线程的概念?


仔细想了下,确实必须跟Thread和Runnable 扯上关系才算是线程
回复 使用道具 举报
{:soso__3814227261634326138_1:}
回复 使用道具 举报
黑马肖凯骏 发表于 2012-3-17 14:14
嗯 ,两个是最基本的,可否把每一个类都认为是一个线程

每new一个类的实例,就相当于产生了一个线程,而 ...

不是,主方法调用类而已,依然是一条线下去的,你new一个对象,就执行类里面的语句,执行完了才是主方法里的下一句,不会产生另外一个线程的
回复 使用道具 举报
Finalizer 线程:在垃圾回收之前执行“对象完成”的Java系统线程
Signal Dispatcher 线程:为JVM处理本地操作系统信号的Java系统线程
Reference Handler  线程:将挂起的对象放到队列中的高优先级Java系统线程。
Attach Listener 线程:用户线程


Finalizer 线程的任务就是调用finalize()方法来进行垃圾回收。

Signal Dispatcher 线程的任务就是处理操作系统方面的东西,屏蔽操作系统,使Java达到跨平台的事儿应该是它干的。

Reference Handler线程的任务就是将一个不用的对象打上标记,放到回收对象的队列中,以便于Finalizer线程来进行释放内存操作。

最后一个 Attach Listener 线程:这个应该是我的Java Profile线程了

所以,当一个最简单的Java程序启动时,除了main线程外,还会启动3个线程。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马