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

java并發面試題和答案

張越彬1年前7瀏覽0評論

Java并發編程在當今的軟件工程中發揮著非常重要的作用。越來越多的軟件公司都將Java并發編程看作是崗位應聘的必要條件之一,因此,很多面試官也會考查應聘者的Java并發編程知識。下面,我們就來看一看一些常見的Java并發面試題以及它們的答案。


public class MyRunnable implements Runnable{
public void run(){
for(int i=0; i<5; i++){
System.out.println(Thread.currentThread().getName() + "在執行" + i);
}
}
public static void main(String[] args){
MyRunnable mr = new MyRunnable();
Thread t1 = new Thread(mr);
Thread t2 = new Thread(mr);
t1.start();
t2.start();
}
}

這是一個簡單的Java并發程序,它的運行結果會是什么?

答案:無法確定。

原因:這是一個多線程程序,t1和t2兩個線程是同時運行的,因此每次運行的結果都是不確定的。


public class MyThread extends Thread{
private int count = 5;
public MyThread(String name){
super();
this.setName(name);
}
public void run(){
super.run();
while(count >0){
count--;
System.out.println("由" + Thread.currentThread().getName() + "計算,count=" + count);
}
}
}
public static void main(String[] args){
MyThread t1 = new MyThread("A");
MyThread t2 = new MyThread("B");
MyThread t3 = new MyThread("C");
t1.start();
t2.start();
t3.start();
}

這個程序的運行結果是什么?

答案:無法確定。

原因:三個線程的運行順序是隨機的,每次執行的結果都是不確定的。


public class MyRunnable implements Runnable{
private int count = 3;
public void run(){
synchronized(this){
while(count >0){
count--;
System.out.println(Thread.currentThread().getName() + " count = " + count);
}
}
}
public static void main(String[] args){
MyRunnable mr = new MyRunnable();
Thread t1 = new Thread(mr, "A");
Thread t2 = new Thread(mr, "B");
Thread t3 = new Thread(mr, "C");
t1.start();
t2.start();
t3.start();
}
}

這個程序的運行結果是什么?

答案:A B C。

原因:synchronized關鍵字鎖住的是對象,t1,t2,t3使用的是同一個對象,因此只有一個線程能夠訪問count變量,因此輸出的結果是ABC。


Java并發編程領域非常廣,需要學習的知識點也很多,想要在面試中獲得成功,需要不斷學習并掌握更多的知識。

上一篇php 5.2 5.4