成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于角色模型的 Java 開(kāi)發(fā)

開(kāi)發(fā) 后端
并發(fā)編程是 Java™ 開(kāi)發(fā) 2.0 的核心概念,但可能不是基于線(xiàn)程的并發(fā)性。Andrew Glover 解釋為什么在多核系統(tǒng)中進(jìn)行并發(fā)編程時(shí),角色優(yōu)于線(xiàn)程。他然后介紹 Kilim —— 一種基于角色的消息傳遞框架,結(jié)合了并發(fā)編程和分布式編程。

對(duì)于軟件開(kāi)發(fā)人員而言,調(diào)試多線(xiàn)程應(yīng)用程序中的非確定缺陷是最痛苦的工作。因此,像大多數(shù)人一樣,我鐘愛(ài)使用 Erlang 和 Scala 等函數(shù)語(yǔ)言進(jìn)行并發(fā)編程。

Scala 和 Erlang 都采用了角色模型來(lái)進(jìn)行并發(fā)編程,沒(méi)有采用線(xiàn)程概念。圍繞角色模型的創(chuàng)新并不僅限于語(yǔ)言本身,角色模型也可供 Kilim 等基于 Java 的角色框架使用。

Kilim 對(duì)角色模型的使用非常直觀,稍后您將看到,該庫(kù)使構(gòu)建并發(fā)應(yīng)用程序變得異常簡(jiǎn)單。

多核挑戰(zhàn)

在 2005 年,Herb Sutter 編寫(xiě)了一篇現(xiàn)在仍然頗為著名的文章 “The Free Lunch is Over: A Fundamental Turn Toward Concurrency in Software”。在這篇文章中,他摒棄了一直誤導(dǎo)著人們的觀念,那就是摩爾定律將繼續(xù)促進(jìn)越來(lái)越高的 CPU 時(shí)鐘速率。

Sutter 預(yù)言了 “免費(fèi)午餐” 的終結(jié),通過(guò)越來(lái)越快的芯片來(lái)捎帶提升軟件應(yīng)用程序的性能將不再可能。相反,他認(rèn)為應(yīng)用程序性能的顯著提升將需要利用多核芯片架構(gòu)來(lái)實(shí)現(xiàn)。

事實(shí)證明他是對(duì)的。芯片制造商已經(jīng)達(dá)到了一種硬性限制,芯片速率已穩(wěn)定在 3.5 GHz 左右多年了。隨著制造商越來(lái)越快地增加芯片上的核心數(shù)量,摩爾定律在多核領(lǐng)域繼續(xù)得以滿(mǎn)足。

Sutter 還提到并發(fā)編程將使開(kāi)發(fā)人員能夠利用多核架構(gòu)。但是,他補(bǔ)充道,“相比如今的各種語(yǔ)言提供的編程模型,我們亟需一種更高級(jí)的并發(fā)編程模型。”

Java 等語(yǔ)言的基本編程模型是基于線(xiàn)程的。盡管多線(xiàn)程應(yīng)用程序并不是很難編寫(xiě),但正確 編寫(xiě)它們?nèi)匀幻媾R許多挑戰(zhàn)。并發(fā)編程的一個(gè)困難之處是利用線(xiàn)程來(lái)考慮并發(fā)性。如今已有許多并發(fā)模型,一種特別有趣并獲得了 Java 社區(qū)認(rèn)可的模型就是角色模型。

角色模型

角色模型是一種不同的并發(fā)進(jìn)程建模方式。與通過(guò)共享內(nèi)存與鎖交互的線(xiàn)程不同,角色模型利用了 “角色” 概念,使用郵箱來(lái)傳遞異步消息。在這里,郵箱 類(lèi)似于實(shí)際生活中的郵箱,消息可以存儲(chǔ)并供其他角色檢索,以便處理。郵箱有效地將各個(gè)進(jìn)程彼此分開(kāi),而不用共享內(nèi)存中的變量。

角色充當(dāng)著獨(dú)立且完全不同的實(shí)體,不會(huì)共享內(nèi)存來(lái)進(jìn)行通信。實(shí)際上,角色僅能通過(guò)郵箱通信。角色模型中沒(méi)有鎖和同步塊,所以不會(huì)出現(xiàn)由它們引發(fā)的問(wèn)題,比如死鎖、嚴(yán)重的丟失更新問(wèn)題。而且,角色能夠并發(fā)工作,而不是采用某種順序方式。因此,角色更加安全(不需要鎖和同步),角色模型本身能夠處理協(xié)調(diào)問(wèn)題。在本質(zhì)上,角色模型使并發(fā)編程更加簡(jiǎn)單了。

角色模型并不是一個(gè)新概念,它已經(jīng)存在很長(zhǎng)時(shí)間了。一些語(yǔ)言(比如 Erlang 和 Scala)的并發(fā)模型就是基于角色的,而不是基于線(xiàn)程。實(shí)際上,Erlang 在企業(yè)環(huán)境中的成功(Erlang 由 Ericsson 創(chuàng)建,在電信領(lǐng)域有著悠久的歷史)無(wú)疑使角色模型變得更加流行,曝光率更高,而且這也使它成為了其他語(yǔ)言的一種可行的選擇。Erlang 是角色模型更安全的并發(fā)編程方法的一個(gè)杰出示例。

不幸的是,角色模型并沒(méi)有植入到 Java 平臺(tái)中,但我們可以通過(guò)各種方式使用它。JVM 對(duì)替代語(yǔ)言的開(kāi)放性意味著您可以通過(guò) Java 平臺(tái)語(yǔ)言(比如 Scala 或 Groovy)來(lái)利用角色(參見(jiàn) 參考資料,了解 Groovy 的角色庫(kù) GPars)。另外,您可以試用一種支持角色模型且基于 Java 的庫(kù),比如 Kilim。

Kilim 中的角色

Kilim 是一個(gè)使用 Java 編寫(xiě)的庫(kù),融入了角色模型的概念。在 Kilim 中,“角色” 是使用 Kilim 的 Task 類(lèi)型來(lái)表示的。Task 是輕量型的線(xiàn)程,它們通過(guò) Kilim 的 Mailbox 類(lèi)型與其他 Task 通信。

Mailbox 可以接受任何類(lèi)型的 “消息”。例如,Mailbox 類(lèi)型接受 java.lang.Object。Task 可以發(fā)送 String 消息或者甚至自定義的消息類(lèi)型,這完全取決于您自己。

在 Kilim 中,所有實(shí)體都通過(guò)方法簽名捆綁在一起,如果您需要同時(shí)執(zhí)行幾項(xiàng)操作,可以在一個(gè)方法中指定該行為,擴(kuò)大該方法的簽名以?huà)伋?Pausable。因此,在 Kilim 中創(chuàng)建并發(fā)類(lèi)就像在 Java 中實(shí)現(xiàn) Runnable 或擴(kuò)展 Thread 一樣簡(jiǎn)單。只是使用 Runnable 或 Thread 的附加實(shí)體(比如關(guān)鍵字 synchronized)更少了。

***,Kilim 的魔力是由一個(gè)稱(chēng)為 weaver 的后期進(jìn)程來(lái)實(shí)現(xiàn)的,該進(jìn)程轉(zhuǎn)換類(lèi)的字節(jié)碼。包含 Pausable throws 字句的方法在運(yùn)行時(shí)由一個(gè)調(diào)度程序處理,該調(diào)度程序包含在 Kilim 庫(kù)中。該調(diào)度程序處理有限數(shù)量的內(nèi)核線(xiàn)程??梢岳么斯ぞ邅?lái)處理更多的輕量型線(xiàn)程,這可以***限度地提高上下文切換和啟動(dòng)的速度。每個(gè)線(xiàn)程的堆棧都是自動(dòng)管理的。

在本質(zhì)上,Kilim 使創(chuàng)建并發(fā)進(jìn)程變得輕松而簡(jiǎn)單:只需從 Kilim 的 Task 類(lèi)型進(jìn)行擴(kuò)展并實(shí)現(xiàn) execute 方法。編譯新創(chuàng)建的支持并發(fā)性的類(lèi)之后,對(duì)其運(yùn)行 Kilim 的 weaver,您會(huì)實(shí)現(xiàn)顯著的性能提升!

Kilim 最初是一種外來(lái)語(yǔ)言,但它帶來(lái)了巨大的回報(bào)。角色模型(以及后來(lái)的 Kilim)使編寫(xiě)依賴(lài)于類(lèi)似對(duì)象的異步操作對(duì)象變得更加簡(jiǎn)單和安全。您可以 使用 Java 的基本線(xiàn)程模型進(jìn)行同樣的操作(比如擴(kuò)展 Thread),但這更具挑戰(zhàn)性,因?yàn)樗鼤?huì)將您帶回鎖和同步的世界中。簡(jiǎn)而言之,將您的并發(fā)編程模型轉(zhuǎn)換為角色使多線(xiàn)程應(yīng)用程序更容易編碼。

【編輯推薦】

  1. Java編程開(kāi)發(fā)手冊(cè)
  2. Java編程 從入門(mén)到實(shí)踐
  3. 和我共同了解Java是什么
  4. Java學(xué)習(xí)如何走出***步
  5. 詳解Java的特點(diǎn)與優(yōu)勢(shì)
責(zé)任編輯:佚名 來(lái)源: ibm.com
相關(guān)推薦

2014-08-11 11:01:43

AngularJS

2011-05-16 14:13:04

模型測(cè)試

2011-06-13 10:54:20

JAVA

2021-08-18 10:06:33

鴻蒙HarmonyOS應(yīng)用

2023-11-01 11:34:21

ContextAndroid

2009-06-18 11:11:08

Java項(xiàng)目模型Eclipse

2024-11-05 12:42:35

2009-07-29 17:31:00

2015-08-28 09:31:00

2011-12-08 09:37:36

JavaNIO

2009-05-31 16:42:45

ReporteWebBlue Coat

2012-05-21 16:08:07

Hadoop云計(jì)算

2022-06-07 14:47:43

飛書(shū)智能問(wèn)答模型

2023-09-25 10:19:01

模型App開(kāi)源

2022-08-19 09:00:00

人工智能GANs生成模型

2025-05-28 01:00:00

大模型智能問(wèn)答AI

2019-11-22 09:40:40

SpringJava編程語(yǔ)言

2009-09-22 12:00:35

ibmdwJava

2022-10-09 15:26:45

人工智能ML機(jī)器學(xué)習(xí)

2024-05-20 12:47:03

AI軟件開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人精品一区二区三区中文字幕 | 国产视频二区 | 欧美在线视频网 | av中文字幕网站 | 国产一区二区 | 久久一 | 日韩视频专区 | 看av网址| 亚洲一区二区在线视频 | 久久久入口 | 国产精品一区二区在线播放 | 99免费看 | 成人在线视频网址 | 一级二级三级在线观看 | 国产亚洲一区二区精品 | 精品福利在线 | 在线观看av网站永久 | 国产一区二区精品在线观看 | 日本电影一区二区 | 免费精品久久久久久中文字幕 | 欧美手机在线 | 国产免费观看一区 | 国产精品一区二区av | 有码一区| 国产1区| 久久99这里只有精品 | 日韩免费视频一区二区 | 91av视频 | 欧美日韩中文字幕在线播放 | 人人cao| 亚洲欧美日韩精品 | 色综合天天网 | 精品国产色 | 一a级片| 一级a毛片 | 日韩在线国产精品 | 99精品国产一区二区青青牛奶 | 精品乱码一区二区三四区 | 成人免费视频播放 | 日韩精品在线看 | 日韩视频在线观看中文字幕 |