開心生活站

位置:首頁 > IT科技 > 

java,active

IT科技2.81W

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

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模式對外暴露的異步方法生成的,而方法請求所代表的操作則由專門的線程來執行,從而實現了方法的調用與執行的分離,產生了併發。

java active

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異步方法的執行結果。

標籤:active java