J2EE面試題之同步和非同步的區別?

2021-07-22 15:08:42 字數 1218 閱讀 2863

**:

同步和非同步的概念對於很多人來說是乙個模糊的概念,是一種似乎只能意會不能言傳的東西。其實我們的生活中存在著很多同步非同步的例子。比如:你叫我去吃飯,我聽到了就立刻和你去吃飯,如果我沒有聽到,你就會一直叫我,直到我聽見了並和你一起去吃飯,這個過程叫同步;非同步過程指你叫我去吃飯,然後你就去吃飯了,而不管我是否和你一起去吃飯。而我得到訊息後可能立即就走,也可能過段時間再走。如果我請你吃飯,就是同步,如果你請我吃飯就用非同步,這樣你比較省錢。哈哈哈。。。

在計算機領域,同步就是指乙個程序在執行某個請求的時候,若該請求需要一段時間才能返回資訊,那麼這個程序將會一直等待下去,直到收到返回資訊才繼續執行下去;非同步是指程序不需要一直等下去,而是繼續執行下面的操作,不管其他程序的狀態。當有訊息返回時系統會通知程序進行處理,這樣可以提高執行的效率。 2

而我們平時經常討論的同步問題多發生在多執行緒環境中的資料共享問題。即當多個執行緒需要訪問同乙個資源時,它們需要以某種順序來確保該資源在某一特定時刻只能被乙個執行緒所訪問,如果使用非同步,程式的執行結果將不可預料。因此,在這種情況下,就必須對資料進行同步,即限制只能有乙個程序訪問資源,其他執行緒必須等待。 3

實現同步的機制主要有臨界區、互斥、訊號量和事件

臨界區:通過對多執行緒的序列化來訪問公共資源或一段**,速度快,適合控制資料訪問。在任意時刻只允許乙個執行緒對共享資源進行訪問,如果有多個執行緒試圖訪問公共資 源,那麼在有乙個執行緒進入後,其他試圖訪問公共資源的執行緒將被掛起,並一直等到進入臨界區的執行緒離開,臨界區在被釋放後,其他執行緒才可以搶占。

互斥量:採用互斥物件機制。 只有擁有互斥物件的執行緒才有訪問公共資源的許可權,因為互斥物件只有乙個,所以能保證公共資源不會同時被多個執行緒訪問。互斥不僅能實現同一應用程式的公共資源安全共享,還能實現不同應用程式的公共資源安全共享 .互斥量比臨界區複雜。因為使用互斥不僅僅能夠在同一應用程式不同執行緒中實現資源的安全共享,而且可以在不同應用程式的執行緒之間實現對資源的安全共享。

訊號量:它允許多個執行緒在同一時刻訪問同一資源,但是需要限制在同一時刻訪問此資源的最大執行緒數目 。訊號量物件對執行緒的同步方式與前面幾種方法不同,訊號允許多個執行緒同時使用共享資源,這與作業系統中的pv操作相同。它指出了同時訪問共享資源的執行緒最大數目。它允許多個執行緒在同一時刻訪問同一資源,但是需要限制在同一時刻訪問此資源的最大執行緒數目。

事件:通過通知操作的方式來保持執行緒的同步,還可以方便實現對多個執行緒的優先順序比較的操作 。

j2ee的考試題(2) struts

題目如下 8.請介紹一下struts1.2 框架的工作流程 並畫出它的工作原理圖.7分,其中工作流程說明5分 原理圖2分 9.請介紹一下struts 1.2 框架中actionform 的流程 3分 10.struts中文問題有哪些解決方案?3分 scope 的屬性是什麼作用?預設值是多少?標籤中p...

J2EE中 實體BEAN和會話BEAN的區別

乙個session bean 代表與客戶程式的乙個短暫的會話,而且可能執行資料庫讀寫操作。乙個session bean 可能會自己呼叫jdbc 或者它可能使用entity bean 來完成此種呼叫。在後者這種情況下,這個session bean 是該entity bean 的客戶。乙個session...

分享一些網際網路公司j2ee面試題

答 exception會被轉到uncaughtexceptionhandler中進行處理。答 複習下thread的五個狀態 掛起 suspend 就緒 ready 執行 running 死亡 dead 呼叫sleep 方法時執行緒停止執行但不釋放資源,呼叫yield 方法時執行緒停止執行同時釋放所占...