tomcat关闭后线程依然运行解决办法

tomcat关闭后线程依然运行解决办法,设置线程为守护线程

守护线程与非守护线程

最近在看多线程的Timer章节,发现运用到了守护线程,感觉Java的基础知识还是需要补充。

Java分为两种线程:用户线程和守护线程

所谓守护线程是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。

守护线程和用户线程的没啥本质的区别:唯一的不同之处就在于虚拟机的离开:如果用户线程已经全部退出运行了,只剩下守护线程存在了,虚拟机也就退出了。 因为没有了被守护者,守护线程也就没有工作可做了,也就没有继续运行程序的必要了。

将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现。在使用守护线程时需要注意一下几点:

(1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。

(2) 在Daemon线程中产生的新线程也是Daemon的。

(3) 守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断。

时间: 2024-10-05 23:58:18

tomcat关闭后线程依然运行解决办法的相关文章

Eclipse 强制关闭后无法打开的解决办法

最狠的解决方法是删除workspace/.metadata/目录,也就是把这个workspace从eclipse的记忆中删除,缺点是要重新加载每一个项目... 网上很流行的一个方法是: $ rm YOUR_PROJECT_DIR/.metadata/.plugins/org.eclipse.core.resources/.snap

Toast在关闭应用后还显示的解决办法

1.我们在用Toast的用法就是:Toast.makeText(Context,CharSequence , Duration).show().但有的时候如果你在一次操作当中多次点击一个view的时候去显示Toast,可能在你关闭 应用后Toast任然会继续显示,这个小瑕疵很是讨厌.下面就说一下解决办法(用到activity的生命周期): 就是在要用Toast的Activity中添加两个函数: 函数一: 1 // 对toast进行一个简单的封装 2 public void toastShow(C

线程间操作无效: 从不是创建控件“”的线程访问它 解决办法(转)

线程间操作无效: 从不是创建控件“”的线程访问它 解决办法 http://blog.sina.com.cn/s/blog_568e66230101der7.html 利用FileSystemWatcher设计一个文件监控系统时,如果一个文件被修改或者新建,则文件修改事件会被多次触发而产生多条信息.为了将一个文件被修改一次而产生的多条信息归结为一条,在设计中新开了一个线程,在指定时间内(如2秒内)这个文件的修改被认为是一次修改,从而只产生一条信息. 这个工作完成后,又出现了另外一个问题:因为需要在

centos 下安装jdk、tomcat 以及tomcat无法从外部访问的解决办法

centos 下安装jdk.tomcat 以及tomcat无法从外部访问的解决办法 原创 2014年08月28日 10:24:33 标签: selinux enforce cent 2223 昨天在centos下安装了jdk和tomcat,并调试通,之前从Ubuntu下装过,还没有从centos弄过,记录一下安装过程与出现的问题. 首先准备好安装文件,jdk-6u45-linux-i586-rpm.bin  apache-tomcat-6.0.41.tar.gz 进入目录 [html] view

新版MySql 5.6.20,安装后无法登陆的解决办法

1.按照提示安装好mysql 2.运行cmd 进入mysql的安装目录,我的安装目录C:\Program Files\MySQL\MySQL Server 5.6\bin 输入 cd C:\Program Files\MySQL\MySQL Server 5.6\bin 3.采用mysqld将mysql注册为服务,命令为:mysqld -install MySQL 4.启动服务:net start MySQL 5.然后登陆,因为root用户的默认密码为空,直接回车进入 mysql -u root

Magento 切换成中文后没有数据信息解决办法

一款基于Google Closure compiler压缩Js文件插件. 快捷键: Ctrl+Alt+M            当前文件内压缩Js代码(不推荐) Ctrl+Alt+Shift+M   压缩Js并生成压缩文件 *.min.js 安装成功重启,如果报错,在配置里改一个参数,"compiler": "uglify_js", { // the closure compiler adds new lines every 500 characters // fo

mac重开电脑后显示重装提示解决办法

情况描述: mac昨天电脑关闭后 第二天打开电脑就显示语言选择安装语言 解决办法: 1  出现语言安装提示界面  我们选择简体中文 2  出现苹果密码登陆    我们选择下面的按钮点击退出  这样就可以返回到正常用户登陆那里了

Tomcat 7 不能传参json 解决办法

之前项目一直使用tomcat6 但是因为某个原因更换了tomcat 7 发现传递json参数时会出现 Using the protocol="HTTP/1.1" connector (Coyote) After upgrading a site to Tomcat 7.0.73 from 7.0.72 or from anything earlier, a url with an unencoded { or } (ie. http://my.com?filter={"sea

SpringBoot集成百度UEditor图片上传后直接访问404解决办法

SpringBoot项目上传图片一般是上传至远程服务器存储,开发过程中可能会上传至当前项目的某个静态目录中,此时就会遇到这个问题,文件在上传之后直接访问并不能被访问到,必须重新加载项目. 首先分析一下原因: 我们知道,如果使用类似 /upload/image/1.jpg 这种格式进行图片的访问的时候,SpringBoot读取的并不是本项目中直接的静态目录,而是在进行编译的时候生成target目录下的文件,如下图所示: 那么问题就来了,我们在运行的过程中上传一个图片的话,并不能重新加载当前这个项目