源**如下:
while (true)
mycon.close();
在以上**中,可以看到,一開始就已經鏈結字串並且select *了乙個資料表中的所有資料,然後用reader來read了那些資料,然後在下面的while()中,進行實際操作,讀取並opc資料,更新資料庫的時候,需要重新開啟一次資料庫,不然的話會報錯,這個問題一開始我覺得有些奇怪,因為我這個小的while完全寫在外面資料庫的open-close中間的,為什麼還要再開啟關閉一次資料庫呢,這樣不會造成額外的操作空間和資源浪費嗎?
其實這裡使用while(reader.reader())的時候,做了條件判斷,這其實也就是多執行緒最常用的方法,用while()判斷語句來開啟新的執行緒,在開啟新的執行緒後,跟原來執行緒有了一定的區別,因此需要重新open和close一次資料庫,才能在新的執行緒裡對資料庫表進行操作。
那麼由此延伸出來的問題,while()包括if()這些條件判斷語句,跟多執行緒有什麼樣的關係呢
實際上,在多執行緒操作中:
在多執行緒操作中,我們常常會遇到需要先判斷訊號量狀態是否就緒,然後執行後續操作的場景。
判斷的時候,就是使用while()和if()的時候,由此來決定是否滿足開啟新執行緒的條件。
多執行緒操作最經典的就是上學的時候那個「生產者消費者問題」,加上「數學家就餐問題」,以及「讀者寫者問題」,這三個都是面試筆試多發試題。如何判斷佇列是否滿,不能產生死鎖,何時阻塞,這些問題。可以多加關注,因為這一部分目前水平有限,也還沒有徹底吃透,所以先不信口開河,憑印象流誤人子弟,所以具體到日後可以進行詳解。
有一篇介紹為什麼生產者消費者模型中,使用while()判斷而不是if()判斷的文章:
以上內容僅供參考,共同進步。歡迎指正。
系統崩潰造成資料庫無法啟動的恢復
本本突然藍屏,當時資料庫是開啟使用中的,重啟後,啟動例項,準備連線資料庫繼續使用,發現無法連線,一直報 sql conn system test test error ora 12514 tns 監聽程式當前無法識別連線描述符中請求的服務 一開始以為資料庫還沒啟動完畢,於是重啟了資料庫服務,多次未果...
mysql資料庫加索引 mysql資料庫加索引
新增普通索引 alter table cmf cz czfjbxx add index index xz xz alter table cmf cz czfjbxx add index index zzyt zzyt alter table cmf cz czrxx add index index ...
SQLCipher android 資料庫加密
專案中引入了sqlcipher之後,會讓你的程式體積驟然增加,打成apk後大概會變大好幾m,是更側重於檔案大小,還是更側重於程式安全,你應該根據具體的需求做出合適的判斷。manifest 配置寫入檔案許可權 因為copy的資料庫檔案到建立的目錄下 module 下的build.gradle comp...