亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在JAVA語言里,面向?qū)ο笏枷肽軌蜃尣l(fā)編程變得更簡單。

可以從封裝共享變量,識別共享變量間的約束條件和執(zhí)行并發(fā)訪問策略這三個(gè)方面下手。

高效的并發(fā)程序要如何寫,Java程序員通過這幾步簡單做到

 

封裝共享變量

將共享變量作為對象屬性封裝在內(nèi)部,對所有公共方法指定并發(fā)訪問策略。

對于不用發(fā)生變化的共享變量(如銀行卡號,身份證號),建議使用final關(guān)鍵字修飾。

public class Counter { 
 private long value; 
 synchronized long get(){ 
 return value; 
 } 
 synchronized long addOne(){ 
 return ++value; 
 } 
}

識別共享變量間的約束條件

/**
 * AtomicLong 是線程安全的
 */
public class SafeWM { 
 // 庫存上限 
 private final AtomicLong upper = new AtomicLong(0); 
 // 庫存下限 
 private final AtomicLong lower = new AtomicLong(0); 
 // 設(shè)置庫存上限 
 void setUpper(long v){ 
 //檢查參數(shù)合法性
 if(v < lower.get()){
 throw new IllegalArgumentException(); 
 }
 upper.set(v); 
 } 
 // 設(shè)置庫存下限 
 void setLower(long v){ 
 //檢查參數(shù)合法性
 if(v > upper.get()){
 throw new IllegalArgumentException(); 
 }
 lower.set(v); 
 } 
 // 省略其他業(yè)務(wù)代碼 
}

制定并發(fā)訪問策略

  1. 避免共享: 利用線程本地存儲以及每個(gè)認(rèn)為u分配獨(dú)立的線程。
  2. 不變模式:在java領(lǐng)域應(yīng)用的很少。
  3. 管程及其他同步工具:Java領(lǐng)域萬能的解決方案是管程,但是對于很多特定場景,使用Java并發(fā)包提供的 讀寫鎖、并發(fā)容器等同步工具會更好。

寫出健壯的并發(fā)程序的原則

  1. 有限使用成熟的工具類:java SDK并發(fā)包里提供了豐富的工具類,能滿足日常需求。
  2. 迫不得已時(shí)才使用低級的同步原語:低級同步原語指的是synchronized,Lock,Semaphore等。
  3. 避免過早優(yōu)化: 安全第一,并發(fā)成語首先要保證安全,出現(xiàn)性能瓶頸后再優(yōu)化。

分享到:
標(biāo)簽:并發(fā) 程序
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定