JDBC Servlet與執行緒安全

2021-09-19 10:39:45 字數 822 閱讀 7628

在使用jdbc連線資料庫時,需要獲取到資料庫連線,可以寫乙個工具類來幫助我們連線資料庫

即實現了**的重用,也降低了錯誤發生的風險

但是在工具類中,獲取的物件是connection物件而不是statement物件呢?

public static connection getconnection() throws sqlexception
就是因為執行緒不安全

如果獲取的是statement物件,此刻有兩個使用者同時獲取statement物件,傳遞資料執行sql語句

當a將資料傳入sql語句中後,但沒有執行時,b將資料傳入,並執行完畢

此時,使用者a的資料就會被覆蓋,使用者a操作的資料將會是b使用者的資料

這就造引起了執行緒不安全,所以返回乙個connection物件,每個使用者都獲取乙個connection物件,互不干擾

與jdbc的出現執行緒安全問題相似,當在servlet中定義乙個全域性變數時

有多個使用者向該網頁傳送請求,那麼全域性變數中的值,到底是哪乙個使用者的值?

這就引起了執行緒不安全,為了避免該問題,在servlet中要避免使用全域性變數

執行緒安全問題產生的原因,就是因為資料域的共享

資料域可以理解為傳入的引數

當資料域共享後,多個執行緒的操作就會對該資料域進行多次的修改

這就產生了執行緒不安全的問題

Selenium WebDriver執行緒安全問題

專案中使用webdriver進行服務端渲染,解決seo的問題。但是最近上線的 多了之後,發現googlebot爬蟲同時爬幾個 的的時候,會有串資料的問題。上網搜了一下發現是webdriver不執行緒安全的 專案 中將webdriver宣告成了類成員變數,所以會有執行緒安全問題。於是將webdrive...

安卓 多執行緒

方法1 建立單獨的執行緒 new thread new runnable start 方法2 利用執行緒池 private executorservice executorservice executors.newfixedthreadpool 4 上面是建立乙個固定大小的執行緒池,這裡面的執行緒不...

安卓 多執行緒

第一種實現子執行緒的方法 繼承thread類 private class mythread extends thread new mythread start 第二種實現子執行緒的方式 實現runnable 任務 介面 private class myrunnable implements runn...