java中线程是何时死亡的:假如在A线程中启动B线程,那么是不是要等B线程死亡了A线程才会死亡呢?
publicclassThreadMain{/***@paramargs*/publicstaticvoidmain(String[]args){ThreadDemo.t...
public class ThreadMain {
/**
* @param args
*/
public static void main(String[] args) {
ThreadDemo.threadStart("test");
}
}
public class ThreadDemo extends Thread{
int a = 10;
int b= 5;
public ThreadDemo(int a,int b){
this.a = a;
this.b = b;
}
public static void threadStart(String string) {
int a =2;
int b = 2 ;
ThreadDemo t1 = new ThreadDemo(a, b);
t1.start();
}
public void run() {
Dao dao = new Dao();
dao.test(a,b);
}
}
public class Dao {
public void test(int a, int b) {
ThreadDemo.threadStart("test");
}
}
以上的例子该怎样理解? 展开
/**
* @param args
*/
public static void main(String[] args) {
ThreadDemo.threadStart("test");
}
}
public class ThreadDemo extends Thread{
int a = 10;
int b= 5;
public ThreadDemo(int a,int b){
this.a = a;
this.b = b;
}
public static void threadStart(String string) {
int a =2;
int b = 2 ;
ThreadDemo t1 = new ThreadDemo(a, b);
t1.start();
}
public void run() {
Dao dao = new Dao();
dao.test(a,b);
}
}
public class Dao {
public void test(int a, int b) {
ThreadDemo.threadStart("test");
}
}
以上的例子该怎样理解? 展开
2个回答
展开全部
线程的死亡有点小复杂,但也不复杂。
线程A在激活线程B之后,就会多了一个线程。但是两个线程之间的死亡基本上是没有关系的。并不是说必须在B线程死亡之后A线程才会死亡。
造成你有这样的错误认识,可能是两点原因:1.误以为线程A激活线程B的过程和方法A调用方法B的过程差不多;2.A线程在任务完成后并没有立刻死亡;
首先是第一点,线程之间是激活的关系,而不是调用的关系。举个例子来说,一家公司有一个销售部,但是只有一个销售部的话,销售业绩不好。为了更好的出业绩,销售部向公司老总申请成立一个市场部,以便提升业绩。然后老总同意了。但是销售部和市场部属于同级单位而不是上下级单位。不存在谁高谁低。这就是激活,而并非调用;其二,A线程在任务完成后并没有立刻死亡的原因是因为垃圾回收机制。回收器并没有在A线程任务完成后立即将其回收,而是不定时地进行回收,所以就导致了A线程不会在任务完成后立即死亡。(当然也有解决的办法,就是手动调用垃圾回收器,对垃圾线程进行回收。System.gc();)
线程A在激活线程B之后,就会多了一个线程。但是两个线程之间的死亡基本上是没有关系的。并不是说必须在B线程死亡之后A线程才会死亡。
造成你有这样的错误认识,可能是两点原因:1.误以为线程A激活线程B的过程和方法A调用方法B的过程差不多;2.A线程在任务完成后并没有立刻死亡;
首先是第一点,线程之间是激活的关系,而不是调用的关系。举个例子来说,一家公司有一个销售部,但是只有一个销售部的话,销售业绩不好。为了更好的出业绩,销售部向公司老总申请成立一个市场部,以便提升业绩。然后老总同意了。但是销售部和市场部属于同级单位而不是上下级单位。不存在谁高谁低。这就是激活,而并非调用;其二,A线程在任务完成后并没有立刻死亡的原因是因为垃圾回收机制。回收器并没有在A线程任务完成后立即将其回收,而是不定时地进行回收,所以就导致了A线程不会在任务完成后立即死亡。(当然也有解决的办法,就是手动调用垃圾回收器,对垃圾线程进行回收。System.gc();)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |