色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java面試線程和集合

楊榮興1年前5瀏覽0評論

Java面試中常考察線程和集合的知識,下面我們來分別介紹一下。

//例子1:創建線程的方式
//繼承Thread類
public class MyThread extends Thread {
public void run() {
System.out.println("繼承Thread類創建線程");
}
}
//實現Runnable接口
public class MyRunnable implements Runnable {
public void run() {
System.out.println("實現Runnable接口創建線程");
}
}
//主函數中創建線程,兩種方式都可以
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
MyRunnable myRunnable = new MyRunnable();
new Thread(myRunnable).start();
}

線程的生命周期:新建、運行、阻塞、等待、超時等待、終止。線程的狀態可由Thread類的getState()方法獲取。

線程間的通信方式:共享變量、wait()、notify()、notifyAll()等,其中wait()、notify()、notifyAll()應與synchronized關鍵字一起使用。

//例子2:使用synchronized關鍵字控制線程訪問共享變量
public class SynchronizedDemo {
private int count = 0;
public synchronized void increase() {
count++;
}
public static void main(String[] args) {
SynchronizedDemo demo = new SynchronizedDemo();
for (int i = 0; i < 10; i++) {
new Thread(() -> {
for (int j = 0; j < 1000; j++) {
demo.increase();
}
}).start();
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(demo.count);
}
}

Java集合框架包括List、Set、Map三種各自的接口和對應的實現類。其中List按照索引位置有序存儲元素,Set不允許重復元素,Map存儲鍵值對。常用的實現類有ArrayList、LinkedList、HashSet、TreeSet、HashMap和TreeMap等。

//例子3:使用集合操作實現查找重復元素
public class CollectionDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("java");
list.add("python");
list.add("c++");
list.add("java");
list.add("go");
Set<String> set = new HashSet<>();
List<String> result = new ArrayList<>();
for (String item : list) {
if (!set.add(item)) {
result.add(item);
}
}
System.out.println(result);
}
}