/**
* ldap数据同步类
* @author wangyijie
* @date 2017年5月25日
* @version 1.0
*/
@Service
public class LdapSynchronizeTask implements Runnable{
private ReentrantLock lock = new ReentrantLock();
private final static Logger logger = LoggerFactory.getLogger(LdapSynchronizeTask.class);
private Thread tempThread;
private final static String name = "Ldap数据同步任务";
@Autowired
private UserSafetyService userSafetyService;
@Override
public String getName() {
return name;
}
@Override
public void run() {
logger.info("线程【{}】开始运行", tempThread.getName());
long start = 0;
long end = 0;
try {
start = System.currentTimeMillis();
userSafetyService.userSynchronize();
end = System.currentTimeMillis();
} catch (Exception e) {
logger.error("ldap数据同步异常",e);
}
logger.info("Ldap数据同步共计用时:{}秒",(end-start)/1000);
logger.info("线程【{}】停止运行", tempThread.getName());
}
/**
* 检测线程是否启动,未启动则启动线程
* @author wangyijie
* @data 2017年5月25日
*/
private void runThread(){
if(tempThread == null || tempThread.isAlive() == false){
try {
lock.lock();
if(tempThread == null || tempThread.isAlive() == false){
tempThread = new Thread(this,name);
tempThread.start();
}
} catch (Exception e) {
logger.error("发布者{}线程启动失败", name,e);
}finally{
lock.unlock();
}
}
}
/**
* 线程中断
*
* @author wangyijie
* @data 2017年5月25日
*/
public void interrupt(){
if(tempThread != null){
tempThread.interrupt();
}
}
/**
* 线程唤醒
* @author wangyijie
* @data 2017年5月25日
*/
public void build(){
runThread();
}
}
多线程
最新推荐文章于 2020-03-23 11:08:12 发布