原子性(Atomicity)Java中,對基本數(shù)據類型的讀取和賦值操作是原子性操作,所謂原子性操作就是指這些操作是不可中斷的,要做一定做完,要么就沒有執(zhí)行。
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網技術服務公司,擁有項目成都做網站、成都網站設計網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元東遼做網站,已為上家服務,為東遼各地企業(yè)和個人服務,聯(lián)系電話:18982081108
原子性:指整個事務是不可以分割的工作單元。只有事務中所有的操作執(zhí)行成功,才算整個事務成功,事務中任何一個SQL語句執(zhí)行失敗,那么已經執(zhí)行成功的SQL語句也必須撤銷,數(shù)據庫狀態(tài)應該回到執(zhí)行事務前的狀態(tài)。
不太清楚你說的boolean是原子性是什么意思,只知道他是java的基本類型。剛搜索了下,你說的原子性應該是線程安全吧。boolean需要轉換成AtomicBoolean類型才是原子性的。我剛搜了下一個類似的文章你可以看下。
也就是說, 要想并發(fā)程序正確地執(zhí)行,必須要保證原子性、可見性以及有序性。只要有一個沒有被保證,就有可能會導致程序運行不正確。
java提供了 sychronized代碼塊,lock接口(它的實現(xiàn)重入鎖是比較常用的)。還可以使用原子數(shù)據結構。AtomicInteger、AtomicLong、AtomicReference等。可見性。
這個問題本身是錯誤的觀點,基本數(shù)據類型是數(shù)據結構,原子性是操作定義,不是一個概念。原話是這樣的,基本數(shù)據類型的賦值是原子性操作。這里還要排除long和double,或者標明64bit操作系統(tǒng)。
這句話沒錯,因為八種基本類型都有對應的包裝類(int的包裝類是Integer),包裝類自然就是對象了。
因為JVM的版本和其它的問題,其它的很多操作就不好說了,比如說++操作在C++中是原子操作,但在Java中就不好說了。另外,Java提供了AtomicInteger等原子類。再就是用原子性來控制并發(fā)比較麻煩,也容易出問題。
不是的,實際它是i=i+1,這個操作首先要讀取i的值,然后為i值加1。是需要拆分的。非原子操作都會存在線程安全問題,需要我們使用同步技術(sychronized)來讓它變成一個原子操作。有好幾種方式實現(xiàn)一個原子操作。
原子性:原子,即一個不可再被分割的顆粒。原子性指的是一個或多個操作要么 全部執(zhí)行成功要么全部執(zhí)行失敗。可見性:一個線程對共享變量的修改,另一個線程能夠立刻看到。
java監(jiān)視器模式。 一直使用某一對象的鎖來保護某狀態(tài)。線程安全委托。 將類的線程安全性委托給某個或多個線程安全的狀態(tài)變量。(注意多個時,這些變量必須是彼此獨立,且不存在相關聯(lián)的不變性條件。
也就是說, 要想并發(fā)程序正確地執(zhí)行,必須要保證原子性、可見性以及有序性。只要有一個沒有被保證,就有可能會導致程序運行不正確。
網頁名稱:java一段代碼原子性 代碼的原子性
鏈接分享:http://chinadenli.net/article36/dehdcsg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、動態(tài)網站、App設計、網站營銷、全網營銷推廣、手機網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)