?Spring 不保證 bean 的線程安全。
默認 spring 容器中的 bean 是單例的。ZFX代理申請www.fx61.com/brokerlist/zfx.html,當單例中存在競態條件,即有線程安全問題。如下面的例子
計數類
package constxiong.interview.threadsafe;
/**
員工經過長期磨合與沉淀,具備了協作精神,得以通過團隊的力量開發出優質的產品。創新互聯堅持“專注、創新、易用”的產品理念,因為“專注所以專業、創新互聯網站所以易用所以簡單”。公司專注于為企業提供成都做網站、成都網站設計、微信公眾號開發、電商網站開發,微信小程序定制開發,軟件定制網站等一站式互聯網企業服務。
- 計數類
- @author ConstXiong
- @date 2019-07-16 14:35:40
*/
public class Counter {
private int count = 0;
public void addAndPrint() {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(++count);
}
}
spring 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<bean id="counter" class="constxiong.interview.threadsafe.Counter" />
</beans>
測試類
package constxiong.interview.threadsafe;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class CounterTest {
public static void main(String[] args) {
final ApplicationContext context = new ClassPathXmlApplicationContext("spring_safe.xml");
for (int i = 0; i < 10; i++) {
new Thread(){@Override
br/>@Override
Counter counter = (Counter)context.getBean("counter");
for (int j = 0; j < 1000; j++) {
counter.addAndPrint();
}
}
}.start();
}
}
}
打印結果開頭和結尾
9818
9819
9820
9821
9822
9823
9824
9825
期望打印出的最大值應該是 10000
修改 spring 配置文件,把 bean 的作用域改為?prototype
<?xml version="1.0" encoding="UTF-8"?>
<bean id="counter" class="constxiong.interview.threadsafe.Counter" scope="prototype"
</beans>
測試結果輸出10
spring 是一個開源的輕量級 JavaBean 容器框架。使用 JavaBean 代替 EJB ,并提供了豐富的企業應用功能,降低應用開發的復雜性。
輕量:非***性的、所依賴的東西少、資源占用少、部署簡單,不同功能選擇不同的 jar 組合
容器:工廠模式實現對 JavaBean 進行管理,通過控制反轉(IOC)將應用程序的配置和依賴性與應用代碼分開
松耦合:通過 xml 配置或注解即可完成 bean 的依賴注入
AOP:通過 xml 配置 或注解即可加入面向切面編程的能力,完成切面功能,如:日志,事務...的統一處理
方便集成:通過配置和簡單的對象注入即可集成其他框架,如 Mybatis、Hibernate、Shiro...
豐富的功能:JDBC 層抽象、事務管理、MVC、Java Mail、任務調度、JMX、JMS、JNDI、EJB、動態語言、遠程訪問、Web Service...?
網站欄目:spring中的bean是線程安全的嗎?
鏈接地址:http://vcdvsql.cn/article42/pdedhc.html
成都網站建設公司_創新互聯,為您提供全網營銷推廣、靜態網站、網站制作、標簽優化、網站排名、定制開發
廣告
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源:
創新互聯