还有,有的人还说,有守护进程。守护进程又是什么东东呢?我们的项目程序里怎么没有阿?
9 个解决方案
#1
忘了。忘得干干净净的~~
#2
守护线程与普通线程的唯一区别是:当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;如果还有一个或以上的非守护线程则不会退出。(以上是针对正常退出,调用System.exit则必定会退出)
所以setDeamon(true)的唯一意义就是告诉JVM不需要等待它退出,让JVM喜欢什么退出就退出吧,不用管它。
所以setDeamon(true)的唯一意义就是告诉JVM不需要等待它退出,让JVM喜欢什么退出就退出吧,不用管它。
#3
怎么没人回答阿。还没有令人满意的答案呢:(
#4
2楼的不是回答?
额。。。。。太恶心了 被无视了
额。。。。。太恶心了 被无视了
#5
有鸡蛋就砸,哈哈
#6
一个线程调用void setDaemon(boolean on)方法可以将自己设置成一个守护(Daemon)线程。例如thread.setDaemon(true);线程默认是非守护线程,非守护线程也称用户线程。当程序中的所有线程都结束运行时,即使守护线程的run()方法中还有需要执行的语句,守护线程也立刻结束。
通常在程序运行是会出现如下问题:main方法结束了,但java程序没有结束?
解决方案是:对java来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个程序只有后台进程运行,这个进程就会结束。在启动start()方法之前调用setDaemon(true)方法可以将线程变成后台线程。
通常在程序运行是会出现如下问题:main方法结束了,但java程序没有结束?
解决方案是:对java来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个程序只有后台进程运行,这个进程就会结束。在启动start()方法之前调用setDaemon(true)方法可以将线程变成后台线程。
#7
用户线程:是你自己写的,可以手工调用;
守护线程(Daemon Thread):简单的说就是是后台线程,
--他只在后台运行
--他不需要手工调用,自动运行;
--他的任务是为其他线程服务;(jvm垃圾回收就是典型的后台线程)
--当所有前台线程死亡,后台线程生命结束。
(前台所有线程死亡后,JVM会自动通知后台线程死亡)
===前台线程要变成后台线程要在线程start()之前,否则会报错
守护线程(Daemon Thread):简单的说就是是后台线程,
--他只在后台运行
--他不需要手工调用,自动运行;
--他的任务是为其他线程服务;(jvm垃圾回收就是典型的后台线程)
--当所有前台线程死亡,后台线程生命结束。
(前台所有线程死亡后,JVM会自动通知后台线程死亡)
===前台线程要变成后台线程要在线程start()之前,否则会报错
#8
你还问线程和进程的区别是吧;
当一个程序进入内存时,他就变成了一个进程(简单的说就是运行中的程序)
---进程是系统进行资源分配的和调度的一个独立单位;
简单的说,程序(每当你启动一个程序会产生很多的进程)==》程序由进程组成(如任务管理器中的结束程序进程)==》而进程由线程组成(线程被封装在任务管理器中看不见);
进程有三大特性:1.独立性
2.动态性
3.并发性
稍微复杂点的说线程与进程的关系是:线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须拥有一个父进程; 线程是独立运行的线程不知道进程中是否还有其他线程;线程的执行时抢占式的,线程可以拥有自己的堆栈自己的程序设计器和自己的局部变量~~~(他们的区别太多了,我捡重要的概括一下吧)
总的来说线程比进程有优点:
--进程间不能共享内存,但线程可以;
--系统创建进程需要为该进程重新分配系统资源,但创建线程代价小的多(进程占用内存大,很消耗cpu;线
程占内存很小)且线程可以实现多线程(实现多任务并发···);
--线程容易调度
当一个程序进入内存时,他就变成了一个进程(简单的说就是运行中的程序)
---进程是系统进行资源分配的和调度的一个独立单位;
简单的说,程序(每当你启动一个程序会产生很多的进程)==》程序由进程组成(如任务管理器中的结束程序进程)==》而进程由线程组成(线程被封装在任务管理器中看不见);
进程有三大特性:1.独立性
2.动态性
3.并发性
稍微复杂点的说线程与进程的关系是:线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须拥有一个父进程; 线程是独立运行的线程不知道进程中是否还有其他线程;线程的执行时抢占式的,线程可以拥有自己的堆栈自己的程序设计器和自己的局部变量~~~(他们的区别太多了,我捡重要的概括一下吧)
总的来说线程比进程有优点:
--进程间不能共享内存,但线程可以;
--系统创建进程需要为该进程重新分配系统资源,但创建线程代价小的多(进程占用内存大,很消耗cpu;线
程占内存很小)且线程可以实现多线程(实现多任务并发···);
--线程容易调度
#9
上面说的很清楚了。
lz可以继续看线程间通信
lz可以继续看线程间通信
#1
忘了。忘得干干净净的~~
#2
守护线程与普通线程的唯一区别是:当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;如果还有一个或以上的非守护线程则不会退出。(以上是针对正常退出,调用System.exit则必定会退出)
所以setDeamon(true)的唯一意义就是告诉JVM不需要等待它退出,让JVM喜欢什么退出就退出吧,不用管它。
所以setDeamon(true)的唯一意义就是告诉JVM不需要等待它退出,让JVM喜欢什么退出就退出吧,不用管它。
#3
怎么没人回答阿。还没有令人满意的答案呢:(
#4
2楼的不是回答?
额。。。。。太恶心了 被无视了
额。。。。。太恶心了 被无视了
#5
有鸡蛋就砸,哈哈
#6
一个线程调用void setDaemon(boolean on)方法可以将自己设置成一个守护(Daemon)线程。例如thread.setDaemon(true);线程默认是非守护线程,非守护线程也称用户线程。当程序中的所有线程都结束运行时,即使守护线程的run()方法中还有需要执行的语句,守护线程也立刻结束。
通常在程序运行是会出现如下问题:main方法结束了,但java程序没有结束?
解决方案是:对java来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个程序只有后台进程运行,这个进程就会结束。在启动start()方法之前调用setDaemon(true)方法可以将线程变成后台线程。
通常在程序运行是会出现如下问题:main方法结束了,但java程序没有结束?
解决方案是:对java来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个程序只有后台进程运行,这个进程就会结束。在启动start()方法之前调用setDaemon(true)方法可以将线程变成后台线程。
#7
用户线程:是你自己写的,可以手工调用;
守护线程(Daemon Thread):简单的说就是是后台线程,
--他只在后台运行
--他不需要手工调用,自动运行;
--他的任务是为其他线程服务;(jvm垃圾回收就是典型的后台线程)
--当所有前台线程死亡,后台线程生命结束。
(前台所有线程死亡后,JVM会自动通知后台线程死亡)
===前台线程要变成后台线程要在线程start()之前,否则会报错
守护线程(Daemon Thread):简单的说就是是后台线程,
--他只在后台运行
--他不需要手工调用,自动运行;
--他的任务是为其他线程服务;(jvm垃圾回收就是典型的后台线程)
--当所有前台线程死亡,后台线程生命结束。
(前台所有线程死亡后,JVM会自动通知后台线程死亡)
===前台线程要变成后台线程要在线程start()之前,否则会报错
#8
你还问线程和进程的区别是吧;
当一个程序进入内存时,他就变成了一个进程(简单的说就是运行中的程序)
---进程是系统进行资源分配的和调度的一个独立单位;
简单的说,程序(每当你启动一个程序会产生很多的进程)==》程序由进程组成(如任务管理器中的结束程序进程)==》而进程由线程组成(线程被封装在任务管理器中看不见);
进程有三大特性:1.独立性
2.动态性
3.并发性
稍微复杂点的说线程与进程的关系是:线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须拥有一个父进程; 线程是独立运行的线程不知道进程中是否还有其他线程;线程的执行时抢占式的,线程可以拥有自己的堆栈自己的程序设计器和自己的局部变量~~~(他们的区别太多了,我捡重要的概括一下吧)
总的来说线程比进程有优点:
--进程间不能共享内存,但线程可以;
--系统创建进程需要为该进程重新分配系统资源,但创建线程代价小的多(进程占用内存大,很消耗cpu;线
程占内存很小)且线程可以实现多线程(实现多任务并发···);
--线程容易调度
当一个程序进入内存时,他就变成了一个进程(简单的说就是运行中的程序)
---进程是系统进行资源分配的和调度的一个独立单位;
简单的说,程序(每当你启动一个程序会产生很多的进程)==》程序由进程组成(如任务管理器中的结束程序进程)==》而进程由线程组成(线程被封装在任务管理器中看不见);
进程有三大特性:1.独立性
2.动态性
3.并发性
稍微复杂点的说线程与进程的关系是:线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须拥有一个父进程; 线程是独立运行的线程不知道进程中是否还有其他线程;线程的执行时抢占式的,线程可以拥有自己的堆栈自己的程序设计器和自己的局部变量~~~(他们的区别太多了,我捡重要的概括一下吧)
总的来说线程比进程有优点:
--进程间不能共享内存,但线程可以;
--系统创建进程需要为该进程重新分配系统资源,但创建线程代价小的多(进程占用内存大,很消耗cpu;线
程占内存很小)且线程可以实现多线程(实现多任务并发···);
--线程容易调度
#9
上面说的很清楚了。
lz可以继续看线程间通信
lz可以继续看线程间通信