JAVA程序默认只有一个MAIN线程吗?好象还有其它线程吧 如:异常处理线程AWT线程... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class T { public static void test() throws Exception { throw new Exception("Hello"); } @Override protected void finalize() throws Throwable { System.out.println(Thread.currentThread().getName()+"Finalize"); } public static void main(String[] args) { T t = new T(); try { test(); } catch (Exception e) { System.out.println(Thread.currentThread().getName()+"Exception");//异常相关的,肯定是main线程 } t=null; System.gc(); //垃圾回收相关的 }} 2楼该多看点书了,可以参考一下java虚拟机规范中的异常处理介绍,看看jvm怎么提供专门的指令来支持异常处理的。不知道你的确定结论是如何得到的。 个人觉得应该是同一线程中的...看了Tinking in java 也没提到异常处理是单独的一个线程 是有很多呀!但是只是说所以的java应用程序是从主线程main启动的而已。 用netbeans调试了一下,发现启动的System下的线程有mainReference HandlerFinalizerSignal DispatcherAttache Listener一共五个。以前的帖子也提到过,只是自己水平太菜,没有关注。 使用到窗口程序的话还有AWT-Windows、AWT-EventQueue-0等很多线程被启动。 在4楼的代码中可以直接得到Finalizer线程的信息。通过线程组也可以直接活动所有线程的信息,不过没有多少实际的意义。 额 用线程组查看的线程信息 public static void main(String[] args) { ThreadGroup threadGroup= Thread.currentThread().getThreadGroup().getParent(); Thread[] list=new Thread [threadGroup.activeCount()]; threadGroup.enumerate(list,true); for (Thread thread : list) { System.out.println(thread.getName()+"优先级:"+thread.getPriority()); } }额 5个 一道关于继承的题 同一目录下两个.java程序如何编译运行? 密码登陆框问题,请帮忙看一下 png图片,降低文件大小的方法 Java杂谈(十)--Spring 菜鸟问题 JCreater安装与系统时间 为什么没有打印出来 急!!!!如何用java写一个生成set get方法的类 基础:访问控制 关于线程的问题!想了一晚上还是想不通!很着急!请教!散100分! 请问在JComboBox中不做任何选择的时候,如何使得系统认为选择的就是第一项? 反射为对象的字段赋值时发生参数错误再求教
public class T { public static void test() throws Exception {
throw new Exception("Hello");
} @Override
protected void finalize() throws Throwable {
System.out.println(Thread.currentThread().getName()+"Finalize");
} public static void main(String[] args) {
T t = new T();
try {
test();
} catch (Exception e) {
System.out.println(Thread.currentThread().getName()+"Exception");//异常相关的,肯定是main线程
}
t=null;
System.gc(); //垃圾回收相关的
}
}
不知道你的确定结论是如何得到的。
main
Reference Handler
Finalizer
Signal Dispatcher
Attache Listener
一共五个。
以前的帖子也提到过,只是自己水平太菜,没有关注。
通过线程组也可以直接活动所有线程的信息,不过没有多少实际的意义。
ThreadGroup threadGroup= Thread.currentThread().getThreadGroup().getParent();
Thread[] list=new Thread [threadGroup.activeCount()];
threadGroup.enumerate(list,true);
for (Thread thread : list) {
System.out.println(thread.getName()+"优先级:"+thread.getPriority());
}
}
额 5个