关于Java线程意外退出自动重启..
最近做项目使用到第三方推送功能,然后创建了一个线程用来循环读取队列中的数据,当队列为空时,则线程暂停2秒.一切都像想象中的辣么美好.可是在后面的测试中发现收不到推送的消息了,接着发现了原来推送的线程由于抛出异常直接挂了,然后百度了一下解决方案,感谢前辈们为我们指明了方向.发现了使用Java中的观察者模式可以很好的解决这个问题,下面是我写的测试代码...
首先是一个线程类继承Observable实现Runnable,注意catch中的代码:
package com.lifesense; import java.util.Observable;
import java.util.concurrent.BrokenBarrierException; public class PushServie extends Observable implements Runnable { // 此方法一经调用,立马可以通知观察者,在本例中是监听线程
public void doBusiness() {
if (true) {
super.setChanged();
}
notifyObservers();
} @Override
public void run() {
while (true) { System.out.println("线程运行了");
try {
Thread.sleep(1000);
if (1 == 1) {
throw new RuntimeException("线程挂了");
}
} catch (Exception e) {
e.printStackTrace();
doBusiness();
break;
} } } public static void main(String[] args) {
PushServie ps = new PushServie();
Listener listener = new Listener();
ps.addObserver(listener);
new Thread(ps).start(); } }
后面是一个监听这个线程的类,只要实现Observer接口就行了:
package com.lifesense; import java.util.Observable;
import java.util.Observer; public class Listener implements Observer { @Override
public void update(Observable o, Object arg) {
System.out.println("RunThread死机");
PushServie run = new PushServie();
run.addObserver(this);
new Thread(run).start();
System.out.println("RunThread重启"); } }
运行一下main方法结果:
本人属于菜鸟一枚,如果你发现有什么不妥的欢迎批评指正,我的QQ:821196632,欢迎大家加我qq共同学习..
关于Java线程意外退出自动重启..的更多相关文章
- 【运维技术】shell脚本实现线程挂掉,自动重启功能
由于分布式系统的流行,服务器上面部署的项目都是多实例的.而我又希望有一个功能,当服务器出现异常情况能够自动重启实例. 所以我想到了使用shell脚本监控实例进程id,如果不存在的话,就重启对应的实例. ...
- window程序意外关闭自动重启脚本实现
@echo off : tasklist|find /i "xxxx"||start yyyy ping/n 127.1>nul 新建 .bat 文件,将其写入文件 xxxx ...
- Supervisor多进程管理 异常自动重启 可视化管理
一.序言 Supervisor是多进程管理工具,在Docker中相关联的进程能够通过supervisor来管理. 微服务项目开发阶段,可用于微服务子项目的启动管理. 支持web可视化管理,能够极大方面 ...
- Java线程监听,意外退出线程后自动重启
Java线程监听,意外退出线程后自动重启 某日,天朗气清,回公司,未到9点,刷微博,顿觉问题泛滥,惊恐万分! 前一天写了一个微博爬行程序,主要工作原理就是每隔2分钟爬行一次微博,获取某N个关注朋友微博 ...
- 用Supervisor实现进程守护,在异常退出时自动重启
程序启动后,有些是以daemon的形式运行,但在意外退出后,如果不能及时重新启动,会有比较严重的影响. 比如Zimg在图片处理中由于某些图片处理失败,会导致zimg进程挂掉,影响正常的服务提供,并且只 ...
- C#WinForm程序异常退出的捕获、继续执行与自动重启
本文参考网上搜索的信息,并做了适当修改可以让捕捉到异常之后阻止程序退出. 另给出了通过命令行自动重启的方法. 如果一个线程里运行下面的代码 ; / a; 将会导致程序自动结束,而且没有任何提示信息 但 ...
- window下进程退出后自动重启
设计思想:编写批处理脚本监控进程的运行状态,如果发现进程停止,则自动重启该进程.批处理脚本(jk.bat)和进程脚本(hello.bat)如下: 1.jk.bat @echo off rem 定义需监 ...
- java通过ftp和sftp上传war包上传到Linux服务器实现自动重启tomcat的脚本代码
ar包自动上传Linux并且自动重启tomcat 用的是jdk1.7出的文件监控 支持ftp和sftp,支持多服务器负载等 配置好config 非maven项目导入直接使用 #\u76D1\u542C ...
- Eclipse修改java代码后自动重启Tomcat解决办法
今天甚是郁闷,项目马上要上线了,早上刚到公司打开MyEclipse 10.07提示过期提示,这对于用惯了破解软件的帝国用户的我原本以为小菜一碟. 于是到网上到处找破解软件,不用多长时间,Ok 破解成功 ...
随机推荐
- 为什么C#中应该用Try-Catch?
[为什么C#中应该用Try-Catch?] http://blog.csdn.net/dier4836/article/details/7292897
- centos 6.5 msyql5.6安装
MySQL 安装 安装mysql前需要查询系统中含有的有关mysql的软件. rpm -qa | grep -i mysql 如下 代表有mysql ,则先进行卸载 mysql-libs-5.1. ...
- jquery版本清单
PM> Install-Package jQuery -Version 1.11.2 jQuery 2.1.3 (latest stable) 315444 Wednesday, Decembe ...
- 所有HTTP请求参数及报文查看SERVLET
HttpRequestServlet.java 说明: 用于接受所有http形式的请求,并把接受到的request中param及getInputStream全打印出来. package king.se ...
- thinkphp 动态验证码
<?php namespace Home\Controller; use Think\Controller; class TestController extends Controller { ...
- JS---如何避免用户在请求时“猛击”
var isAjax=false;//是否正在执行ajax请求,此处表示不在拿数据 var getInfoByTrainCode=function () { if(isAjax) return;//如 ...
- Linux如何复制,打包,压缩文件
(1)复制文件 cp -r 要copy的文件/("/"指的是包括里面的内容) newfile_name(要命名的文件名) eg:cp -r webapps_zero/ f ...
- [html]LESS-1.3.3
网站:http://www.bootcss.com/p/lesscss/ 下载链接:http://files.cnblogs.com/files/z5337/less-1.3.3.min.js
- svg path详解
svg的<path>标签具有强大的功能,主要包括以下命令 M(move to) 参数:x,y L(line to) 参数:x,y H 参数:x V 参数:y C S Q T Z 参考:
- NGUI 屏幕自适应(初始设定宽高800x480只支持比其大的屏幕)
自适应讲解部分可以参考以下网址:http://www.xuanyusong.com/archives/2536,下面代码中提到的AdaptiveManualHeight()函数就是参考该文章的. 下面 ...