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、Lock、volatitle】Java執行緒synchronized
- Java多執行緒之synchronized理論Java執行緒synchronized
- Java多執行緒之synchronized詳解Java執行緒synchronized
- Java多執行緒(三):SynchronizedJava執行緒synchronized
- java多執行緒3:synchronizedJava執行緒synchronized
- Java多執行緒之二(Synchronized)Java執行緒synchronized
- Java多執行緒——synchronized的使用示例Java執行緒synchronized
- JAVA-多執行緒(關鍵字:synchronized)Java執行緒synchronized
- 多執行緒基礎之synchronized和volatile執行緒synchronized
- Java多執行緒之執行緒中止Java執行緒
- Java多執行緒之—Synchronized方式和CAS方式實現執行緒安全效能對比Java執行緒synchronized
- java多執行緒中的synchronized的byte[0]Java執行緒synchronized
- Java多執行緒之FutureTaskJava執行緒
- Java多執行緒之CASJava執行緒
- java多執行緒之執行緒的基本使用Java執行緒
- Java多執行緒之守護執行緒實戰Java執行緒
- java synchronized 保護執行緒安全Javasynchronized執行緒
- java多執行緒之Thread類Java執行緒thread
- java多執行緒之volatile理解Java執行緒
- 多執行緒(二)、內建鎖 synchronized執行緒synchronized
- Java多執行緒-執行緒中止Java執行緒
- Java多執行緒程式設計筆記2:synchronized同步方法Java執行緒程式設計筆記synchronized
- 【Java多執行緒】輕鬆搞定Java多執行緒(二)Java執行緒
- Java多執行緒之Callable,Future,FutureTaskJava執行緒
- Java多執行緒之進階篇Java執行緒
- java——多執行緒Java執行緒
- java多執行緒Java執行緒
- Java - 多執行緒Java執行緒
- java 多執行緒Java執行緒
- Java多執行緒-執行緒狀態Java執行緒
- Java多執行緒-執行緒通訊Java執行緒
- java 多執行緒守護執行緒Java執行緒
- Java多執行緒(2)執行緒鎖Java執行緒
- java多執行緒9:執行緒池Java執行緒
- 【java多執行緒】(二)執行緒停止Java執行緒
- 多執行緒系列之 執行緒安全執行緒
- iOS 多執行緒之執行緒安全iOS執行緒
- Android多執行緒之執行緒池Android執行緒