synchronized使用了對象鎖保證了臨界區代碼的原子性,臨界區內的代碼是不可分割的,不會被線程切換所打斷。
如:
public class Test { private static int x = 0; private static final Object sync = new Object(); public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread() { @Override public void run() { for (int i = 0; i< 5000; i++) { synchronized (sync) { x++; } } } }; Thread t2 = new Thread() { @Override public void run() { for (int i = 0; i< 5000; i++) { synchronized (sync) { x--; } } } }; t1.start(); t2.start(); t1.join(); t2.join(); System.out.println(x); } }
synchronized也可以放在方法上:
1. 放在非靜態方法:
public synchronized void test1() { } 等價于 public void test1() { synchronized (this) { } }
2. 放在靜態方法:
Class Test { public synchronized static void test1() { } 等價于 public void test1() { synchronized (Test.class) { } } }
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
本文名稱:java并發編程之synchronized-創新互聯
當前網址:http://vcdvsql.cn/article28/dchocp.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、建站公司、靜態網站、網站設計、企業建站、移動網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯