從專案中談JAVA中static 方法在多執行緒環境下的運用
最近在做一個實時性比較高的系統,資料庫訪問很頻繁。在這個專案中資料庫訪問的大多數都被我做成了static 方法。(這樣做應該不是很好,沒辦法發揮dao模式的優勢,不過湊合用吧)因這個系統是多執行緒。static方法的運用需要注意,不能在servlet中使用成員變數,因為如果你的servlet使用的是多執行緒模式,所有的servlet共享一個servlet例項,在多執行緒的情況下,會發生髒讀問題;主要不能對類成員的同步訪問。如果是方法的區域性成員則是執行緒安全的。
總的說: 如果這個方法用的很頻繁,就把它定義為static,需要注意的是執行緒間共享變數的同步。比如:執行緒不安全的資料結構 。
static的方法好處就是,在使用時速度快,不需要例項化物件就可以直接呼叫。在硬體有限,實時性要求比較高的情況下,應該提倡多用吧。
有空得了解下sun的java體系設計的思想,是static還是不是static,這是個問題!!
相關推薦
從專案中談JAVA中static 方法在多執行緒環境下的運用
最近在做一個實時性比較高的系統,資料庫訪問很頻繁。在這個專案中資料庫訪問的大多數都被我做成了static 方法。(這樣做應該不是很好,沒辦法發揮dao模式的優勢,不過湊合用吧)因這個系統是多執行緒。static方法的運用需要注意,不能在servlet中使用成員變數,因為如果你
C# Winform專案中多執行緒環境下, 如何跨執行緒對Window窗體控制元件進行安全訪問?
請嘗試執行這段程式碼, 結果你會發現微軟開發工具會提示, Tb_Text.Text = int_Index.ToString(); 涉及"對Windows窗體控制元件進行執行緒安全呼叫", 並給瞭如下的解決方案:https://msdn.microsoft.com/zh-cn/library/ms171728
Java多執行緒環境下的懶漢模式解決方案
一、場景簡述 單例模式下有餓漢模式和懶漢模式,其中懶漢模式在於呼叫相關方法時例項才被建立。懶漢模式我們不難實現,但是在懶漢模式下我們如果使用多執行緒,就會取出多個例項的情況,與單例模式相違背,所以該篇部落格筆者主要關於在多執行緒環境下利用DCL雙檢查鎖機制來實現懶漢模式。
java多執行緒環境下對變數的讀寫操作的原子性問題
本文轉載自:http://www.cnblogs.com/qlee/archive/2011/09/13/2174434.html 以下多執行緒對int型變數x的操作,哪幾個需要進行同步:( )A. x=y; B. x++; C. ++x; D. x=1;從表面看上去實在
Java設計模式(二):單例模式的5種實現方式,以及在多執行緒環境下5種建立單例模式的效率
這段時間從頭溫習設計模式。記載下來,以便自己複習,也分享給大家。 package com.iter.devbox.singleton; /** * 餓漢式 * @author Shearer * */ public class SingletonDemo1 {
junit測試和main方法多執行緒中遇到的問題
利用Junit測試多執行緒時經常遇到任務執行不完就會停止,下面是我的任務執行緒類: package timerTest; import java.io.BufferedReader; import java.io.BufferedWriter; import java.i
Java併發程式設計(8):多執行緒環境中安全使用集合API(含程式碼)
Java併發程式設計(8):多執行緒環境中安全使用集合API(含程式碼)JAVA大資料中高階架構 2018-11-09 14:44:47在集合API中,最初設計的Vector和Hashtable是多執行緒安全的。例如:對於Vector來說,用來新增和刪除元素的方法是同步的。如果只有一個執行緒與Vector的例
Python中的多執行緒程式設計,執行緒安全與鎖(一) 聊聊Python中的GIL 聊聊Python中的GIL python基礎之多執行緒鎖機制 python--threading多執行緒總結 Python3入門之執行緒threading常用方法
1. 多執行緒程式設計與執行緒安全相關重要概念 在我的上篇博文 聊聊Python中的GIL 中,我們熟悉了幾個特別重要的概念:GIL,執行緒,程序, 執行緒安全,原子操作。 以下是簡單回顧,詳細介紹請直接看聊聊Python中的GIL GIL:&n
【4】Java併發程式設計:多執行緒中的快取一致性和CAS
一、匯流排鎖定和快取一致性 基本概念 這是兩個作業系統層面的概念。隨著多核時代的到來,併發操作已經成了很正常的現象,作業系統必須要有一些機制和原語,以保證某些基本操作的原子性,比如處理器需要保證讀一個位元組或寫一個位元組是原子的,那麼它是如何實現的呢?有
Java 內部類,多執行緒中Synchronized與wait,notify的使用
工作內容: 1.成員內部類 與成員方法,屬性的訪問許可權一致 2.靜態內部類 修飾符 stactic 類名{...} 3.匿名內部類 new 類名()/介面名(重寫介面方法) 4.區域性內部類 程式碼塊中 5.執行緒Thread wait,noti
【Java 單例模式】Java 單例模式在多執行緒環境中可能存在的問題
在多執行緒環境下,使用延遲載入的方式實現單例模式,會出現錯誤。 例如,使用如下方式實現單例類: package study20170307; /** * Created by apple on 17/3/7. */ public class Sin
【轉】Java Executor框架在多執行緒應用中的使用
java平臺一直對併發程式設計和多執行緒有這很好的支援。但在早期這種支援也只是在應用層呼叫原生結構,這種方式最大的缺陷就是使這些原始構件有效的被呼叫;否則,應用將不能正確執行或者不能達到期望結果。
java中模擬一個阻塞佇列(多執行緒)
模擬一個阻塞佇列,當這個佇列中滿了的話,再往裡新增元素則會阻塞在那裡,直到有元素取出的時候才能往裡加,取元素的時候,當佇列是空的時候則會阻塞在那裡,一直到有元素新增為止 import java.util.LinkedList; import java.util
【Java併發程式設計】之八:多執行緒環境中安全使用集合API(含程式碼)
在集合API中,最初設計的Vector和Hashtable是多執行緒安全的。例如:對於Vector來說,用來新增和刪除元素的方法是同步的。如果只有一個執行緒與Vector的例項互動,那麼,要求獲取
在多執行緒環境中呼叫native方法
這幾天忙著寫一個用於資料同步的Java程式,在這裡遇到了一個令人頭大的問題。問題是這樣:我的資料同步程式要同時跑四個執行緒,在其中的一個執行緒中,要做一個MD5的檔案校驗工作。這個MD5的校驗是要通過呼叫一個dll來實現,這個dll(名字叫做MD5Operation.dll)
如何正確實現多執行緒環境中的單例模式
要實現單例模式,馬上可以想到的有三種方法: 餓漢式 懶漢式 有且只有一個例項的列舉 如何正確地在多執行緒環境下實現單例模式呢? 對於 餓漢式 和 單例項列舉 來說,它們都是利用jvm類載入機制來實現單例模式。使用這兩種方法,無論是否是在多執行緒環境中,都
32位jdk中, long 型別的變數多執行緒中賦值操作問題
package im.zxd.test; public class LongTest { public static long num = 0; public static final long value1=-1L; public stati
《 Java併發程式設計從入門到精通》第5章 多執行緒之間互動:執行緒閥
作者:張振華 購買連結:天貓商城 (投入多少,收穫多少。參與多深,領悟多深,京東,亞馬遜,噹噹均有銷售。) 5.1 執行緒安全的阻塞佇列BlockingQueue (1)先理解一下Queue、Deque、BlockingQueue的概念: Queue(佇列) :用於儲存一組元素,不
徹頭徹尾理解單例模式及其在多執行緒環境中的應用
摘要: 本文首先概述了單例模式產生動機,揭示了單例模式的本質和應用場景。緊接著,我們給出了單例模式在單執行緒環境下的兩種經典實現:餓漢式 和懶漢式,但是餓漢式是執行緒安全的,而懶漢式是非執行緒安全的。在多執行緒環境下,我們特別介紹了五種方式來在多執行緒環境下建立執行緒安全的單例,即分別使用sy
socket 程式設計中。 服務端用到多執行緒
客戶端連線服務端之後, 服務端會生成與客戶端交換資訊的socket。 在服務端實現多執行緒: 為每個連線建立一個執行緒進行資訊交換。 import threading from socket import * from time import ctime HOST='127.0.0