Spring框架中的單例Beans是線程安全的么?
Springfram
static線程安全嗎?
靜態(tài)線程安全。對(duì)于普通的方法來說,它是線程安全的,只要線程沒有在方法中途停止,它就是安全的。It只是可能會(huì)有不一致的數(shù)據(jù)。多線程不是兩個(gè)線程同時(shí)運(yùn)行,更不是兩個(gè)線程同時(shí)運(yùn)行在同一個(gè)方法上。任何時(shí)候都只有一個(gè)線程在運(yùn)行。
linux下C中怎么讓才能安全關(guān)閉線程?
要回答這個(gè)問題,我們必須首先找出關(guān)閉或退出線程的方法。
線程退出模式
如果進(jìn)程中的任何線程調(diào)用exit、_Exit或_exit,則整個(gè)進(jìn)程終止。同樣,當(dāng)信號(hào)的默認(rèn)動(dòng)作是終止進(jìn)程時(shí),發(fā)送給線程的信號(hào)將終止整個(gè)進(jìn)程。單線程有三種方法可以在不終止整個(gè)進(jìn)程的情況下退出其控制流。
一個(gè)線程可以簡(jiǎn)單地從線程處理程序返回,返回值是thread的退出代碼。
該線程可以被同一進(jìn)程中的另一個(gè)線程取消。
這個(gè)線程可以調(diào)用pthread_exi。
線程出口的返回值
#includeltpthread.HGTvoidpthread_exit(void*rval_ptr)
#includeltpthread.HGTintpthread_join(pthread_tthread,void**rval_ptr)
pthread_join函數(shù)的rval_ptr參數(shù)是一個(gè)無(wú)類型指針。進(jìn)程中的其他線程可以通過調(diào)用pthread_join函數(shù)來使用rval_ptr指針,調(diào)用它會(huì)阻塞線程,直到指定的線程調(diào)用pthread_exit或從其線程處理程序返回或被取消。如果只從它的線程處理程序返回,rval_ptr將包含返回代碼。如果線程被取消,則由rval_ptr指定的內(nèi)存位置被設(shè)置為PTHREAD_CANCELED。
通過調(diào)用pthread_join,加入的線程將被自動(dòng)置于分離狀態(tài)。如果線程已經(jīng)處于分離狀態(tài),pthread_join可能會(huì)失敗并返回。回到艾因瓦爾。如果我們對(duì)線程的返回值不感興趣,我們可以將rval_ptr設(shè)置為NULL。在這種情況下,調(diào)用pthread_join允許我們等待指定的線程,而不檢索線程的終止?fàn)顟B(tài)。
下圖顯示了如何從終止的線程中獲取退出代碼。