欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java 原子性和同步鎖

夏志豪1年前7瀏覽0評論

Java 中的原子性和同步鎖是非常重要的概念,下面我們來具體了解一下:

1. 原子性

原子性是指一個操作是不可中斷的,即使在多線程的情況下,一個操作具有原子性,也不會被其它線程打斷。例如,對于普通的變量 i,它的 ++ 操作不具有原子性,因為這個操作分為兩步:先將 i 取出,然后加上1。如果同時有兩個線程對 i 進行 ++ 操作,就會出現沖突。

2. 同步鎖

同步鎖是用來保證代碼塊在多線程環境中的同步執行的,即在同一時刻只能有一個線程進入代碼塊。synchronized 就是 Java 中實現同步鎖的關鍵字,它可以用來修飾一個代碼塊或一個方法。

下面我們來看一個例子:

public class MyThread {
private static int num = 0;
public static void main(String[] args) {
Thread t1 = new Thread(() ->{
for (int i = 0; i< 10000; i++) {
addNum();
}
});
Thread t2 = new Thread(() ->{
for (int i = 0; i< 10000; i++) {
addNum();
}
});
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(num);
}
private synchronized static void addNum() {
num++;
}
}

這個例子中,我們創建了兩個線程 t1 和 t2,將一個靜態變量 num 作為共享變量傳遞給它們。然后我們在這兩個線程中都執行了 addNum() 函數,這個函數使用了 synchronized 關鍵字修飾,因此保證了在同一時刻只能有一個線程執行它。最后輸出 num 變量的值,我們會發現它的值一定是 20000,這就是同步鎖的作用。