本文目錄一覽:
java中怎樣得到線程結束的通知
runnable 現成結束不通知,但是 run方法運行到最後一行就算結束了。
Callable 也可是實現通知。
MyCallable task2 = new MyCallable(1);
MyCallable task3 = new MyCallable(2);
MyCallable task1 = new MyCallable(0);
// 創建一個執行任務的服務
ExecutorService es = Executors.newFixedThreadPool(3);
// 提交並執行任務,任務啟動時返回了一個Future對象,
// 如果想得到任務執行的結果或者是異常可對這個Future對象進行操作
Future future1 = es.submit(task1);
// 獲得第一個任務的結果,如果調用get方法,當前線程會等待任務執行完畢後才往下執行
System.out.println(“task1: ” + future1.get());
Future future2 = es.submit(task2);
// 等待5秒後,再停止第二個任務。因為第二個任務進行的是無限循環
Thread.sleep(5000);
System.out.println(“task2 cancel: ” + future2.cancel(true));
// 獲取第三個任務的輸出,因為執行第三個任務會引起異常
// 所以下面的語句將引起異常的拋出
Future future3 = es.submit(task3);
System.out.println(“task3: ” + future3.get());
java通知伺服器,按照一定規律間隔時間向某埠發通知
提供給你一個思路,可能不是最優解決方案。使用quartz,設置時間段,比如早上7:00-12:00每2min執行一次,建立一個任務詳情表(或者在你的業務表中擴展一個欄位也可以),包含欄位:日期,通知階段。任務執行邏輯:
查詢當天是否有任務執行記錄,如果沒有則插入,表示當天第一次執行。如果有,則查詢當前的執行階段是多少,比如是2min,10min等等。。然後把當前系統時間與執行階段做比較,如果沒有到達下一個應該執行任務的階段就直接return,不執行。
——————-另外quartz可以設置線程是否單例,如果上一個線程正在執行任務,那麼等上一個線程關閉才會執行下一個任務。這樣就不會new很多線程出來了。 具體的可以參見quartz手冊
java 如何實現系統消息推送
消息推送方式分為兩種:短連接和長連接。也就是客戶端與伺服器之間的數據傳輸交互方式不同。
1、短連接又稱為輪詢,方式為pull。客戶端定時向伺服器發送請求,詢問是否有數據,時間頻次可以設置。這種的方式更適合web端使用,用在APP有很多弊端。
2、長連接方式為push,伺服器主動向客戶端發送數據。市面上移動端產品基本採用這種方式,但是ios和android系統有很大的區別。不論手機上安裝了多少個APP,也只有一條長連接,消息最終由蘋果伺服器進行內置分發。即使用戶關閉了APP,依然可以收到消息推送。
實現系統消息推送,就需要比較好的第三方軟體就行輔助,極光就是一個不錯的選擇。極光JPush 是經過考驗的大規模 App 推送平台,每天推送消息量級為數百億條。JPush 提供可視化的 web 端控制台發送通知,統計分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手機平台。
java消息通知怎麼做
java消息通知有兩種方案:
1.如果是平台級別的系統,可使用第三方消息推送服務,例如極光,用這個來做消息訂閱與分發。
2.如果只是簡簡單單的需要提示到web頁面,可以用js 定時ajax訪問後台,後台來確定是否有數據更新,無論這個數據是哪來的。
消息通知可以了解一下極光推送
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/195833.html