⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dealthread.java

📁 短信开发用于文件交换处理转发的类模块
💻 JAVA
字号:
package com.sms.platform.switchcenter.thread;

import org.apache.log4j.Logger;

import com.pub.dataframe.FileStack;
import com.sms.platform.switchcenter.entity.ReceiverFile;
import com.sms.platform.switchcenter.entity.SenderFile;
import com.sms.platform.switchcenter.parameter.ReceiverParameter;
import com.sms.platform.switchcenter.parameter.SenderParameter;
import com.sms.platform.switchcenter.parameter.SwitchParameter;
import com.sms.platform.switchcenter.support.Support;
import com.sms.protocol.base.IDataPackage;

public class DealThread implements IThread {

	private static Logger log = Logger.getLogger(DealThread.class);

	public DealThread() {
	}

	boolean runflag = true;

	public synchronized void startthread() {
		runflag = true;
		Thread t = new Thread(this);
		t.start();
	}

	public synchronized void stopthread() {
		runflag = false;
	}

	public synchronized boolean getrunflag() {
		return runflag;
	}

	SwitchParameter swp = null;

	ReceiverParameter rp = null;

	SenderParameter sp = null;

	public void run() {
		// 系统处理参数
		swp = SwitchParameter.getInstance();
		// 接收对象文件
		rp = ReceiverParameter.getInstance();
		// 发送对象文件
		sp = SenderParameter.getInstance();
		int i = 0;
		while (getrunflag()) {
			try {

				if (rp.isPriority()) {// 文件有优先级

					// 获得读取文件对象
					ReceiverFile rf = rp.getFilename().get(i);
					// 获得文件对列对象
					FileStack fs = FileStack.getInstance(rf.getFilename());
					// 获得发送文件对象
					SenderFile sf = sp.getFilename().get(fs.getClass());
					// 获得数据
					IDataPackage idp = (IDataPackage) rf.getObjectClass().newInstance();
					if (fs.popNoWait(idp)) {
						// 获得写入处理职责链
						Support outsupport = sf.getSupport();
						// 获得读取处理职责链
						Support insupport = rf.getSupport(outsupport);
						// 获得Runable接口类对象
						HandlerThread ht = new HandlerThread(idp, insupport);
						// 送入线程池作处理
						swp.getThreadPool().execute(ht);
						
						if(i == 0){
							while(true){
								IDataPackage idp_w = (IDataPackage) rf.getObjectClass().newInstance();
								if(fs.popNoWait(idp_w)){
									// 获得写入处理职责链
									Support outsupport_w = sf.getSupport();
									// 获得读取处理职责链
									Support insupport_w = rf.getSupport(outsupport_w);
									// 获得Runable接口类对象
									HandlerThread ht_w = new HandlerThread(idp_w, insupport_w);
									// 送入线程池作处理
									swp.getThreadPool().execute(ht_w);
								} else {
									break;
								}
							}
						} else {
							i = 0;
							continue;
						}
					}
					
					if (i >= (rp.getFilename().size() - 1)) {
						i = 0;
						Thread.sleep(1000);
						System.out.println("sleep");
					} else {
						i++;
					}

				} else {// 文件无优先级
					int flag = 0;
					// 获得读取文件对象
					ReceiverFile rf = rp.getFilename().get(i);
					// 获得文件对列对象
					FileStack fs = FileStack.getInstance(rf.getFilename());
					// 获得发送文件对象
					SenderFile sf = sp.getFilename().get(rf.getObjectClass());
					// 获得数据
					IDataPackage idp = (IDataPackage) rf.getObjectClass()
							.newInstance();
					if (fs.popNoWait(idp)) {
						// 获得写入处理职责链
						Support outsupport = sf.getSupport();
						// 获得处理职责链
						Support insupport = rf.getSupport(outsupport);
						// 获得Runable接口类对象
						HandlerThread ht = new HandlerThread(idp, insupport);
						// 送入线程池作处理
						swp.getThreadPool().execute(ht);
						flag = 0;
					} else {
						flag = flag - 1;
					}

					if (i >= (rp.getFilename().size() - 1)) {
						i = 0;
						if(flag < 0){
							Thread.sleep(1000);
							System.out.println("sleep");
							flag = 0;
						}
					} else {
						i++;
					}
					
				}

			} catch (Throwable e) {
				e.printStackTrace();
			}
		}
	}

	public String toString() {
		this.getClass().getName();
		return getClass().getName() + " " + this.getrunflag();
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -