java轮询文件停止线程,java 运行多线程轮询时,外部停止轮询
1,先建一個Map
/**
* 創建一個Map用于存放線程id對象集合,主要是用于到達崗亭之后掃碼付費,如果人工收費就需要關閉線程,key是停車記錄Id,
*/
public static MapMAPTHREAD = new HashMap();
2.建一個線程類繼承Runnable
/**
* 輪詢查詢網上支付結果
* @author Administrator
*
*/
@Component
public class PollingSearch implements Runnable{
private String flag;
private ParkingRecord parkingRecord;
// @Autowired
// private OnlinePaymentService onlinePaymentService;
//@Autowired
//private CameraLogic cameraLogic;
@Override
public void run() {
try {
CameraLogic cameraLogic = (CameraLogic) SpringUtil.getObject("cameraLogic");
OnlinePaymentService onlinePaymentService = (OnlinePaymentService) SpringUtil.getObject("onlinePaymentServiceImpl");
while(CommonUtil.MAPTHREAD.get(flag).equals("true")) {
Thread.sleep(5000);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void setFlag(String flag) {
this.flag = flag;
}
public ParkingRecord getParkingRecord() {
return parkingRecord;
}
public void setParkingRecord(ParkingRecord parkingRecord) {
this.parkingRecord = parkingRecord;
}
public String getFlag() {
return flag;
}
spring容器中無法自動注入,所以用這兩句代碼獲取,springUtil可參考我的另一篇文章?spring ioc容器管理
CameraLogic cameraLogic = (CameraLogic) SpringUtil.getObject("cameraLogic");
OnlinePaymentService onlinePaymentService = (OnlinePaymentService) SpringUtil.getObject("onlinePaymentServiceImpl");
重要的代碼在這
while(CommonUtil.MAPTHREAD.get(flag).equals("true")) {
上面代碼在根據map中判斷了是否執行輪詢,當為true時才執行
下面開啟線程
final String parkRecordId = oldRecord.getId();
final ParkingRecord parkingRecord = oldRecord;
//將賬單id放進map中,為了等待支付完成時可以根據停車記錄id找到該賬單后刪除
CommonUtil.PAYMENTRECORDMAP.put(parkRecordId, paymentRecord.getId());
CommonUtil.MAPTHREAD.put(parkRecordId, "true");
PollingSearch pollingSearch = new PollingSearch();
pollingSearch.setParkingRecord(parkingRecord);
pollingSearch.setFlag(parkRecordId);
Thread thread = new Thread(pollingSearch);
thread.start();
在需要關閉線程的時候
final String parkingRecordId = parkingRecord.getId();
CommonUtil.MAPTHREAD.put(parkingRecordId,"false");
CommonUtil.MAPTHREAD.remove(parkingRecordId);
這樣子就可以給各個線程手動關閉了
初學者,不喜勿怪 排版懶得排了
總結
以上是生活随笔為你收集整理的java轮询文件停止线程,java 运行多线程轮询时,外部停止轮询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 带奴的网名124个
- 下一篇: 形容心寒的句子146个