1. 在windows部署个项目, 线程每隔一段时间同步一次数据, 但是运行一段时间就一直停在sleep, 查看状态被阻塞 , 其他的线程也被BLOCKED
while (true) { try { //全量同步: 取完queue配置, 同步结束 //增量同步: 循环配置里的内容 conf = busiBlockingQueue.poll(5000L, TimeUnit.MILLISECONDS); //log.info("conf = {},busiBlockingQueue.size = {}", (conf == null ? "null" : conf.getBusiType()), busiBlockingQueue.size()); if (conf == null && transType == TransConstants.TransType.FULL) { break; } //同步数据并处理数据 try { //是否成功获得同步标识 BusiTransVo busiTransVo = buildTransVo(transType, conf, sessionInfo); //BusinessInfo businessInfo = sessionInfo.getBusinessInfo(); //log.info("[{}]SYNCING[{}][{}]: busiTypeName={}, busiType={}, transTimestamp = '{}',transOffsetId = {},conf.szie = {}", Thread.currentThread().getName(),transType, businessInfo.getBusinessId(), conf.getBusiTypeName(), conf.getBusiType(), busiTransVo.getTransTimestamp(), busiTransVo.getTransOffsetId(), busiBlockingQueue.size()); transDataService.dataHandle(transType, conf, busiTransVo, sessionInfo); } catch (Exception e) { log.error(e.getMessage(), e); } //如果是增量同步会轮询同步配置里的内容 if (transType == TransConstants.TransType.INCR) { busiBlockingQueue.put(conf); Thread.sleep(ConvertUtil.convertObjectToLong(conf.getBusiTransFrequency(),2000L)); } } catch (Exception e) { log.error(conf == null ? "Conf is null" : conf.toString()); log.error(e.getMessage(), e); } }
线程被阻塞, 也未发现死锁
相关推荐
Windows线程Windows线程
Windows多线程编程Windows多线程编程Windows多线程编程Windows多线程编程Windows多线程编程Windows多线程编程Windows多线程编程
在windows的环境下,创建一个控制台进程,此进程创建两个并发线程,一个是读线程,另一个是写线程。这两个线程共享一个数组A,写线程对数组分别进行10次写操作,每次写操作对A的每个元素赋一个相同的值;读线程对数组...
Windows下查看进程中的线程
在Windows NT中,它被设为NULL,表示使用缺省值。 dwStackSize,线程堆栈大小,一般=0,在任何情况下,Windows根据需要动态延长堆栈的大小。 lpStartAddress,指向线程函数的指针,形式:@函数名,函数名称没有...
我只想要进程的某个线程休眠一段时间的,可是用sleep()是将整个进程都休眠的,这个可能达不到,我们想要的效果了。目前我知道有三种方式: 1、usleep 这个是轻量级的,听说能可一实现线程休眠,我个人并不...
若要使进程完成某项操作,它必须至少拥有一个线程,该线程负责执行包含在进程的地址空间中的代码。 实际上,单个进程可能包含若干个线程,所有这些线程都“同时”执行进程地址空间中的代码。 为此,每个线程都有它...
漫谈兼容内核之二十二 Windows 线程的调度和运行
易语言判断多个线程运行结束源码,判断多个线程运行结束,子程序1
windows线程之c++封装 class CThread { public: CThread(); virtual ~CThread(); // 启动线程 DWORD Start(void); // 结束线程 void End(void); // 线程执行函数 virtual void Run(void) = 0; ...
windows编程中的多线程处理PPT,希望有助于大家对多线程处理的学习有帮助。
详细介绍了windows内核与线程的概念,并提供调度算法
让你很快学会线程的使用,初学者很值的分析的一段示例程序。
Windows多线程编程详解
线程的休眠是指让线程暂时停止执行一段时间,然后再继续执行。在休眠期间,线程不会占用CPU资源,可以用来等待某个条件满足或者定时执行任务。 线程的礼让是指一个线程主动让出CPU资源,使其他线程有机会执行。在...
windows 线程控制,临界区使用,用VS2005平台开发,线程开启,关闭,挂起,恢复,临界,
windows多线程编程入门,带你快速学会windows多线程编程
在windows系统下,默认只能够查看进程的使用情况而不能查看线程的详细信息,使用此工具能够查看所有的线程的详细信息
windows 线程学习,帮助大家学好操作系统中线程的致事内容
Windows 2000提供的线程间通讯类内核对象允许同一进程或跨进程的线程之间互相发送信息,包括文件、文件映射、邮件位和命名管道等,其中最常用的是文件和文件映射。这类对象允许一个线程很容易地向同一进程或其他进程...