java多執行緒之(synchronized)
public class MyThread {
private static int i=5;
public static synchronized void print(String a) {
if(a.equals("a")) {
i--;
System.out.println("a "+i);
}else {
i=i-2;
System.out.println("b "+i);
}
System.out.println("last "+i);
}
public static void main(String[] args) {
final MyThread thread=new MyThread();
final MyThread thread1=new MyThread();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
thread.print("a");
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
thread1.print("b");
}
}).start();
}
}
a 4
last 4
b 2
last 2
在變數和方法上加static ,在該類的所有物件是具有相同的引用的
public class MyThread {
private int i=5;
public synchronized void print(String a) {
if(a.equals("a")) {
i--;
System.out.println("a "+i);
}else {
i=i-2;
System.out.println("b "+i);
}
System.out.println("last "+i);
}
public static void main(String[] args) {
final MyThread thread=new MyThread();
final MyThread thread1=new MyThread();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
thread.print("a");
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
thread1.print("b");
}
}).start();
}
}
a 4
last 4
b 3
last 3
由此可見,synchronized 一個物件一把鎖,多個執行緒多個鎖
Synchronized 其他特點
1.Synchronized 鎖重入:作用避免死鎖
2.出現異常時,鎖自動釋放
相關文章
- Java多執行緒之synchronized理論Java執行緒synchronized
- Java多執行緒之synchronized詳解Java執行緒synchronized
- Java多執行緒之執行緒同步【synchronized、Lock、volatitle】Java執行緒synchronized
- Java多執行緒(三):SynchronizedJava執行緒synchronized
- java多執行緒3:synchronizedJava執行緒synchronized
- Java多執行緒之synchronized的小介紹Java執行緒synchronized
- Java多執行緒之二(Synchronized)Java執行緒synchronized
- Java多執行緒之synchronized增強版——ReentrantLockJava執行緒synchronizedReentrantLock
- Java多執行緒——synchronized的使用示例Java執行緒synchronized
- JAVA多執行緒-基礎篇-synchronizedJava執行緒synchronized
- JAVA-多執行緒(關鍵字:synchronized)Java執行緒synchronized
- Java多執行緒5:synchronized鎖方法塊Java執行緒synchronized
- Java多執行緒4:synchronized鎖機制Java執行緒synchronized
- Java多執行緒之執行緒中止Java執行緒
- Java 多執行緒程式設計要點(synchronized)Java執行緒程式設計synchronized
- Java多執行緒之—Synchronized方式和CAS方式實現執行緒安全效能對比Java執行緒synchronized
- 多執行緒基礎之synchronized和volatile執行緒synchronized
- java多執行緒系列之執行緒池Java執行緒
- Java 多執行緒併發程式設計之 Synchronized 關鍵字Java執行緒程式設計synchronized
- java多執行緒中的synchronized的byte[0]Java執行緒synchronized
- java多執行緒:synchronized和lock比較淺析Java執行緒synchronized
- Java多執行緒之FutureTaskJava執行緒
- Java多執行緒之CASJava執行緒
- java多執行緒之執行緒的基本使用Java執行緒
- java--多執行緒之後臺執行緒Java執行緒
- Java多執行緒——執行緒Java執行緒
- Java多執行緒之守護執行緒實戰Java執行緒
- Java 多執行緒學習筆記(五)synchronized 鎖重入Java執行緒筆記synchronized
- 多執行緒(二)、內建鎖 synchronized執行緒synchronized
- java多執行緒系列之synchronousQueueJava執行緒
- Java多執行緒-執行緒中止Java執行緒
- Java多執行緒——執行緒池Java執行緒
- Java多執行緒程式設計筆記2:synchronized同步方法Java執行緒程式設計筆記synchronized
- Java 多執行緒乾貨系列—(二)synchronized | 掘金技術徵文Java執行緒synchronized
- 【Java多執行緒】輕鬆搞定Java多執行緒(二)Java執行緒
- Java多執行緒/併發05、synchronized應用例項:執行緒間操作共享資料Java執行緒synchronized
- 多執行緒-執行緒控制之休眠執行緒執行緒
- 多執行緒-執行緒控制之加入執行緒執行緒