日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java轮询文件停止线程,java 运行多线程轮询时,外部停止轮询

發布時間:2023/12/2 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 运行多线程轮询时,外部停止轮询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。