java active是什么,讓我們一起了解一下?
在java中,Active Object模式是一種異步編程模式。它通過對方法的調用與方法的執行進行解耦來提高并發性。它的核心是允許任務的提交(相當于對異步方法的調用)和任務的執行(相當于異步方法的真正執行)分離。
首先從調用方代碼來看,調用一個Active Object對象的方法與調用普通Java對象的方法并無太大差別。
1?ActiveObject?ao=...; 2?Future?future?=?ao.doSomething("data"); 3?//執行其它操作 4?String?result?=?future.get(); 5?System.out.println(result);
那么Active Object模式的架構是什么,有什么作用?
1、當Active Object模式對外暴露的異步方法被調用時,與該方法調用相關的上下文信息,包括被調用的異步方法名(或其代表的操作)、調用方代碼所傳遞的參數等,會被封裝成一個對象。
該對象被稱為方法請求(Method Request)。方法請求對象會被存入Active Object模式所維護的緩沖區(Activation Queue)中,并由專門的工作線程負責根據其包含的上下文信息執行相應的操作。
也就是說,方法請求對象是由運行調用方代碼的線程通過調用Active Object模式對外暴露的異步方法生成的,而方法請求所代表的操作則由專門的線程來執行,從而實現了方法的調用與執行的分離,產生了并發。
2、Active Object模式的主要參與者有以下幾種。
Proxy:負責對外暴露異步方法接口。當調用方代碼調用該參與者實例的異步方法doSomething時,該方法會生成一個相應的MethodRequest實例并將其存儲到Scheduler所維護的緩沖區中。doSomething方法的返回值是一個表示其執行結果的外包裝對象:Future參與者的實例。異步方法doSomething運行在調用方代碼所在的線程中。
MethodRequest:負責將調用方代碼對Proxy實例的異步方法的調用封裝為一個對象。該對象保留了異步方法的名稱及調用方代碼傳遞的參數等上下文信息。它使得將Proxy的異步方法的調用和執行分離成為可能。其call方法會根據其所包含上下文信息調用Servant實例的相應方法。
ActivationQueue:負責臨時存儲由Proxy的異步方法被調用時所創建的MethodRequest實例的緩沖區。
Scheduler:負責將Proxy的異步方法所創建的MethodRequest實例存入其維護的緩沖區中。并根據一定的調度策略,對其維護的緩沖區中的MethodRequest實例進行執行。其調度策略可以根據實際需要來定,如FIFO、LIFO和根據MethodRequest中包含的信息所定的優先級等。
Servant:負責對Proxy所暴露的異步方法的具體實現。
Future:負責存儲和返回Active Object異步方法的執行結果。
以上就是小編今天的分享了,希望可以幫助到大家。