Java中的while循環(huán)和s關(guān)鍵字是編程中常用的工具,它們可以使代碼更加靈活,適應(yīng)不同的情況。下面分別介紹一下它們的用法。
while(condition){ //執(zhí)行代碼塊 }
while循環(huán)是一個(gè)基本的控制結(jié)構(gòu),用于循環(huán)執(zhí)行某段代碼,直到條件不再成立為止。當(dāng)滿足條件時(shí),代碼塊會(huì)一直執(zhí)行,直到條件不再成立時(shí)跳出循環(huán)。
其中condition部分是一個(gè)布爾表達(dá)式,如果為true則執(zhí)行循環(huán)體,否則跳出循環(huán)。以下是一個(gè)簡(jiǎn)單的while循環(huán)示例:
int i = 0; while(i< 10){ System.out.println(i); i++; }
上述代碼會(huì)循環(huán)輸出0到9這10個(gè)數(shù)字。
synchronized(object){ //執(zhí)行代碼塊 }
synchronized關(guān)鍵字用于實(shí)現(xiàn)多線程的同步,它可以使得多個(gè)線程在訪問某個(gè)共享資源時(shí)保持同步,避免競(jìng)爭(zhēng)和沖突。在synchronized關(guān)鍵字后面,一般會(huì)跟著一個(gè)對(duì)象或者類。
以下是synchronized關(guān)鍵字的使用示例:
public class MyThread implements Runnable{ private int count = 0; private Object lock = new Object(); public void run(){ synchronized(lock){ for(int i = 0; i< 10; i++){ count++; System.out.println("count = " + count); } } } } public class Main{ public static void main(String[] args){ MyThread thread = new MyThread(); Thread t1 = new Thread(thread); Thread t2 = new Thread(thread); t1.start(); t2.start(); } }
上述代碼創(chuàng)建了兩個(gè)線程,并共享MyThread對(duì)象中的count屬性。由于count屬性不是原子操作,可能存在多個(gè)線程同時(shí)修改的情況,這時(shí)就需要通過使用synchronized關(guān)鍵字來進(jìn)行同步。在MyThread的run方法中,使用lock對(duì)象加鎖,保證在執(zhí)行count++的時(shí)候只有一個(gè)線程能夠訪問count屬性。