2013-03-07 123 views
0

考慮此「模式」我在我繼承一個應用程序中遇到:靜態方法調用單

public class BusinessUtil{ 
    public static void doBusiness(IService myService, String arg1, int arg2){ 
     //something something 
     myService.doStuff(arg1, arg2); 
    } 
} 

爲myService豆是springBean(=單)。它實際上是一個CXF的客戶端(=產生的web服務客戶端)

這是web應用,所以靜態 doBusiness()方法是從不同併發線程調用。 此方法是線程安全的嗎?

之前你問:我知道這是一個奇怪的'模式'。我知道 doBusiness()方法是相當多餘的,因爲我們可以直接調用 myService.doStuff()而不是將它傳遞到調用它的靜態方法中。正如我所說,我繼承了一個應用程序,這個「模式」遍佈全球。我不知道爲什麼。 該應用程序有(有時)一些奇怪的行爲,我試圖找出問題的根源。

回答

2

doBusiness()中沒有任何內容導致線程不安全。是否線程安全取決於線程安全性myService.doStuff(arg1, arg2);

+0

謝謝!這種方法還有其他的考慮嗎? 我的意思是,你什麼時候會使用這種方法:'BusinessUtil.doBusiness(service,arg1,arg2)'而不是更直觀的'service.doStuff(arg1,arg2)'? 我問,因爲我在我的問題中描述的'模式'對我來說沒有多大意義。 – thomash 2013-03-07 08:22:37

+0

好吧,說實話,這種「模式」對我來說似乎沒有任何意義(如果它實際上在做你寫的東西)。然而,在開發領域工作多年後,我看到很多人實際上在做很多沒有意義的「抽象」或「模式」:P – 2013-03-08 03:28:47

0

線程安全與否取決於myService.doStuff(arg1,arg2);既然是cxf-client這篇文章Are CXF client proxies thread safe? 可能有用

+0

謝謝。我見過這篇文章。這被認爲是線程安全的。 – thomash 2013-03-07 08:29:31