📄 dealthread.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 + -