簡體   English   中英

如何處理Java中的回調

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM