[英]How do I handle a callback in java
我有一個servlet,它使用http get從另一個服務器請求地理位置。 響應是通過另一個服務器的回調接收的,並最終到達另一個servlet。 理想情況下,我想在第一個servlet上返回一個映射,並使該異步機制同步。 目前,我所能做的就是輪詢一個共享的哈希圖,直到值存在為止,這似乎有點丑陋。 有什么想法可以更優雅地實現嗎?
在最基本的級別上,使用條件變量比非阻塞循環更有效。
// global, shared lock.
final Lock lock = new ReentrantLock();
final Condition locationReceived = lock.newCondition();
// first servlet:
//
lock.lock();
try {
requestLocation();
if (!locationReceived.await(10, TimeUnit.SECONDS)) {
// location was not received in the timeout.
} else {
// read location from shared object.
}
} finally {
lock.unlock();
}
// servlet that receives geolocation
//
lock.lock();
try {
// set location in shared object.
locationReceived.signal();
} finally {
lock.unlock();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.