亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

多線程工作處理

張軍 6886 0

多線程工作處理接口

package zj.thread.bean;

/**
 * 多線程工作處理接口
 * 
 * @version 1.00 (2014.09.15)
 * @author SHNKCS 張軍 {@link  <a target=_blank href="http://m.eyofj.com">張軍個(gè)人網(wǎng)站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
public interface IWorkerService<T> {
	/**
	 * 處理業(yè)務(wù)
	 * 
	 * @param worker
	 *            工作對(duì)象
	 * @author 張軍
	 * @date 2015-11-03 21:59:00
	 * @modifiyNote
	 * @version 1.0
	 */
	public void doWork();

	/**
	 * 處理業(yè)務(wù)拋出的異常信息
	 * 
	 * @param t
	 *            線程對(duì)象
	 * @param e
	 *            異常信息
	 * @author 張軍
	 * @date 2015-11-03 21:59:00
	 * @modifiyNote
	 * @version 1.0
	 * @return 是否退出程序[true:退出,false:繼續(xù)]
	 */
	public boolean exceptionQuit(Thread t, Throwable e);

	/**
	 * 設(shè)置workerThread對(duì)象
	 * 
	 * @param worker
	 *            工作對(duì)象
	 * @author 張軍
	 * @date 2015-11-03 21:59:00
	 * @modifiyNote
	 * @version 1.0
	 */
	public void setWorker(WorkerThread<T> worker);

	/**
	 * 獲取workerThread對(duì)象
	 * 
	 * @param worker
	 *            工作對(duì)象
	 * @author 張軍
	 * @date 2015-11-03 21:59:00
	 * @modifiyNote
	 * @version 1.0
	 */
	public WorkerThread<T> getWorker();
}

多線程工作處理實(shí)現(xiàn)類(lèi)

package zj.thread.bean;

import org.apache.log4j.Logger;

/**
 * 多線程工作處理實(shí)現(xiàn)類(lèi)
 * 
 * @version 1.00 (2014.09.15)
 * @author SHNKCS 張軍 {@link  <a target=_blank href="http://m.eyofj.com">張軍個(gè)人網(wǎng)站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
public abstract class WorkerService<T> implements IWorkerService<T> {
	private Logger logger = Logger.getLogger(this.getClass());
	// 此屬性必須要定義
	private WorkerThread<T> worker;

	@Override
	public abstract void doWork();

	@Override
	public void setWorker(WorkerThread<T> worker) {
		// 此方法必須要實(shí)現(xiàn)
		this.worker = worker;
	}

	@Override
	public WorkerThread<T> getWorker() {
		return worker;
	}

	@Override
	public boolean exceptionQuit(Thread t, Throwable e) {
		logger.error("線程[" + t.getName() + "]執(zhí)行發(fā)生異常,默認(rèn)退出", e);
		return true;
	}
}

多線程工作處理

package zj.thread.bean;

import java.io.Serializable;
import java.util.concurrent.CountDownLatch;

import lombok.Getter;
import lombok.Setter;

/**
 * 多線程工作處理
 * 
 * @version 1.00 (2014.09.15)
 * @author SHNKCS 張軍 {@link <a target=_blank href="http://www.shanghaijiadun.com">上海加盾信息科技有限公司</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://m.eyofj.com">張軍個(gè)人網(wǎng)站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
@Getter
@Setter
public class WorkerThread<T> extends Thread implements Serializable {
	private static final long serialVersionUID = 1L;
	// 多線程處理對(duì)象計(jì)數(shù)器
	private CountDownLatch latch;
	// 業(yè)務(wù)處理對(duì)象
	private IWorkerService<T> service;
	// 業(yè)務(wù)參數(shù)
	private T task;

	/**
	 * 構(gòu)造對(duì)象
	 * 
	 * @param latch
	 *            多線程處理對(duì)象計(jì)數(shù)器
	 * @param service
	 *            業(yè)務(wù)處理對(duì)象
	 * @param task
	 *            業(yè)務(wù)參數(shù)
	 */
	public WorkerThread(IWorkerService<T> service, T task) {
		this(null, service, task);
	}

	/**
	 * 構(gòu)造對(duì)象
	 * 
	 * @param latch
	 *            多線程處理對(duì)象計(jì)數(shù)器
	 * @param service
	 *            業(yè)務(wù)處理對(duì)象
	 * @param task
	 *            業(yè)務(wù)參數(shù)
	 */
	public WorkerThread(CountDownLatch latch, IWorkerService<T> service, T task) {
		this.latch = latch;
		this.service = service;
		this.task = task;
		this.service.setWorker(this);
		catchException();
	}

	/**
	 * 啟動(dòng)工作
	 */
	public void run() {
		service.doWork();// 工作了
		// 不放在finally中為了鎖定線程,由手動(dòng)退出線程
		finish();
	}

	/**
	 * 當(dāng)線程出錯(cuò)時(shí),手動(dòng)完成工作
	 */
	public void finish() {
		if (latch != null) {
			latch.countDown();// 完成工作,計(jì)數(shù)器減一
		}
	}

	/**
	 * 捕獲異常信息
	 */
	private void catchException() {
		this.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
			@Override
			public void uncaughtException(Thread t, Throwable e) {
				boolean finish = service.exceptionQuit(t, e);
				if (finish) {
					finish();
				}
			}
		});
	}
}



更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: va亚洲va日韩不卡在线观看 | 成人在线日韩 | 亚洲一级片免费 | 日本中文字幕永久在线 | 天天拍拍夜夜出水 | 国产小视频免费在线观看 | 天堂网在线观看 | 精品国产一区二区三区四 | 精品国产亚一区二区三区 | 性做久久 | 欧美亚洲网 | 特黄aaaaaaaaa真人毛片 | 国产理论最新国产精品视频 | 深夜男人天堂 | 国模私拍视频在线观看 | 日日摸夜夜爽久久综合 | 亚洲和欧美毛片久久久久 | 狠狠色婷婷丁香综合久久韩国 | 国产精品亚欧美一区二区三区 | 日韩精品中文字幕久久 | 久久福利资源网站免费看 | 中文字幕精品一区二区三区视频 | 网站久久| 国产精品www视频免费看 | 曰本毛片va看到爽不卡 | 最近更新在线中文字幕一页 | 日本一级毛片aaaaa | 日本吻胸抓胸激烈视频网站 | 亚洲第一激情 | 日本中文字幕一区二区有码在线 | 欧美综合网 | 亚洲伊人成人网 | 综合精品在线 | 欧美成人一区二区三区不卡视频 | 国语偷拍视频在线观看 | 精品视频日本 | 国产精品视频视频久久 | 香蕉视频日本 | 欧美色欧美亚洲高清在线视频 | 九九看片 | 兔子bt资源在线 |