代码如下所示:
建立了一个触发线程池runable的单线程,具体如下所示:、
详细代码如下所示:
package com.wutos.sync.client.component;
import com.wutos.sync.constant.CommonConst;
import com.wutos.sync.domain.mapper.DataSyncLogMapper;
import com.wutos.sync.service.DataSyncServiceResend;
import com.wutos.sync.service.IUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ReSendtaskServer {
Logger logger = LoggerFactory.getLogger(ReSendtaskServer.class);
ExecutorService executor = Executors.newFixedThreadPool(1);
private IUserService userService;
private DataSyncServiceResend dataSyncServiceResend;
private boolean ReSendtask = true;
private String reSendrecord;
private String db;
private ReSendtask task;
public ReSendtaskServer(String reSendTable,String db) {
userService = (IUserService) SpringUtil.getBean("userService");
this.reSendrecord=reSendTable;
this.db=db;
}
public void init(String uri) {
if (ReSendtask) {
task = new ReSendtask(uri);
executor.submit(task);
} else {
logger.info(" datasync resend init fail");
}
}
}
通过debug可以看出,相关的线程确实试单线程的一些操作:、
这里是使用executor来进行线程的调度,
以及定义了一个相关的runable实现的一个具体的一个相关的操作步骤,
根据后序的引用对象进入runable的接口实现runable接口:、
显示过程如下所示:
package com.wutos.sync.client.component;
import com.wutos.sync.service.DataSyncServiceResend;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
public class ReSendtask implements Runnable{
Logger logger = LoggerFactory.getLogger(ReSendtask.class);
private boolean isRunable = true;//进行Runable当前类的监控
@Autowired
DataSyncServiceResend dataSyncServiceResend;
@Value("${super.dataSync.server.uri}")
private String writeDatabase;
@Override
public void run() {
logger.info("reSendtask count is run!");
//调用接口的实现参数
dataSyncServiceResend.repeatSend();
}
public void stop() {
this.isRunable = false;
logger.info("task is stop!");
}
public ReSendtask(String uri){
// this.writeDatabase=uri;
}
}