src/main/java/com/zy/core/ServerBootstrap.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensCrnThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/core/ServerBootstrap.java
@@ -35,6 +35,8 @@ @Autowired private MainProcess mainProcess; int CRN_COUNT = 0; public static final Map<CrnThread, Thread> map = new ConcurrentHashMap<>(); /** @@ -132,13 +134,15 @@ @Scheduled(cron = "0/3 * * * * ? ") public void kill() { int i = 0; for (Map.Entry<CrnThread, Thread> entry : map.entrySet()) { i++; MelsecCrnThread key = (MelsecCrnThread) entry.getKey(); System.out.println("第"+i+"个堆垛机线程重启线程条件:"+(System.currentTimeMillis() - key.getSign())); if (System.currentTimeMillis() - key.getSign() > 120000) { System.out.println("第"+i+"个堆垛机线程被重启"); CRN_COUNT++; SiemensCrnThread key = (SiemensCrnThread) entry.getKey(); // System.out.println("第"+i+"个堆垛机线程重启线程条件:"+(System.currentTimeMillis() - key.getSign())); if (CRN_COUNT>10000){ continue; } if (System.currentTimeMillis() - key.getSign() > 120000 && System.currentTimeMillis() - key.getSign()<1200000) { System.out.println("第"+CRN_COUNT+"个堆垛机线程被重启"); // 请求线程安全停止 key.requestStop(); src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -40,6 +40,11 @@ private CrnProtocol crnProtocol; private boolean resetFlag = false; public Long sign = System.currentTimeMillis(); public boolean isRunning = true; /** * 堆垛机是否在回原点运动中标记 */ @@ -53,7 +58,7 @@ @SuppressWarnings("InfiniteLoopStatement") public void run() { this.connect(); while (true) { while (isRunning) { try { int step = 1; Task task = MessageQueue.poll(SlaveType.Crn, slave.getId()); @@ -94,7 +99,7 @@ } catch (Exception e) { // e.printStackTrace(); } sign = System.currentTimeMillis(); } } @@ -414,4 +419,9 @@ } // 提供一个方法来停止线程 public void requestStop() { isRunning = false; } }