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

java 多線程和并發(fā)

老白2年前8瀏覽0評論

Java多線程和并發(fā)是Java語言開發(fā)中非常重要的一個部分。Java中的多線程使得程序可以同時執(zhí)行多個任務,從而提高了程序的性能和效率。

Java的多線程基于線程對象的概念,每個線程對象都有一個獨立的執(zhí)行路徑。Java中的線程對象可以通過繼承Thread類或實現(xiàn)Runnable接口來創(chuàng)建。一般來說,實現(xiàn)Runnable接口是更好的方法,因為Java不支持多繼承,使用Runnable接口可以避免這個問題。

public class MyThread implements Runnable {
private String name;
public MyThread(String name) {
this.name = name;
}
@Override
public void run() {
for(int i=0; i<10; i++) {
System.out.println(name + " : " + i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
Thread t1 = new Thread(new MyThread("Thread 1"));
Thread t2 = new Thread(new MyThread("Thread 2"));
t1.start();
t2.start();
}
}

上述代碼是一個使用Runnable接口創(chuàng)建的多線程示例,其中MyThread類是Runnable接口的實現(xiàn),用于定義線程要執(zhí)行的代碼。在Main類中,我們創(chuàng)建了兩個MyThread對象,并將它們分別作為參數(shù)傳遞給Thread類的構造方法中,然后調用start()方法來啟動線程執(zhí)行。

Java中的并發(fā)主要是通過同步和鎖機制來實現(xiàn)的。在多線程環(huán)境下,如果多個線程同時操作同一個共享變量或資源,就會出現(xiàn)競爭條件。為了避免這種情況,Java提供了synchronized關鍵字和Lock機制來實現(xiàn)線程的同步。

public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public int getCount() {
return count;
}
}
public class Main {
public static void main(String[] args) {
Counter counter = new Counter();
Thread t1 = new Thread(() ->{
for(int i=0; i<1000; i++) {
counter.increment();
}
});
Thread t2 = new Thread(() ->{
for(int i=0; i<1000; i++) {
counter.increment();
}
});
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Count : " + counter.getCount());
}
}

上述代碼是一個使用synchronized關鍵字實現(xiàn)的線程同步示例。其中Counter類表示一個計數(shù)器對象,increment()方法是計數(shù)器加1的方法,在方法上加上synchronized關鍵字可以保證同一時間只有一個線程在執(zhí)行該方法。Main類中創(chuàng)建了兩個線程分別執(zhí)行increment()方法,最終輸出計數(shù)器的值。

Java多線程和并發(fā)是Java開發(fā)中非常重要的概念,需要理解和掌握。