java面试题 并发_Java 并发面试题(一)
在我招聘和找工作的過程中,java 并發是非常重要的考察內容。
這篇文章中的面試題目來自并發編程,非常好的學習網站,題目來源?http://ifeve.com/javaconcurrency-interview-questions-base/
a. 多線程基礎
0.?java中有幾種方法可以實現一個線程?
在我招聘的過程中,大部分面試者都只能回答繼承 ?Thread 類,這個回答是不能讓面試官滿意的。由于 java 的單繼承特性,如果繼承 Thread 類之后,自身創建的線程類就失去了靈活性,因此更好的方法是實現 Runnable 接口,實際上 Thread 類也是實現了 Runnable 接口。
那么如何啟動線程呢?先看 Thread 類
1 public class MyThread extendsThread {2
3 @Override4 public voidrun() {5 System.out.println(currentThread().getId() + " ----> running");6 }7
8 public static voidmain(String[] args) {9 Thread th1 = newMyThread();10 Thread th2 = newMyThread();11 th1.start();12 th2.start();13 }14 }
運行結果:
9 ---->running10 ----> running
從這個簡單的例子可以看出,Thread 類啟動線程是通過調用 start() 方法實現的,而 Runnable 接口只提供了 run() 方法。所以第二個問題來了
1. start() 方法和 run() 有什么區別?
從 JDK 7 文檔中可以看到 start() 方法創建了一個新的線程并調用了 run() 方法,如果直接在代碼中調用 run() 方法,那么實際上是在當前線程執行而沒有創建新的線程。
那么如何啟動實現 Runnable 接口的線程呢?可以對上面的例子進行修改,Thread 類的構造方法可以允許傳入一個 Runnable 對象,利用這一點
總結
以上是生活随笔為你收集整理的java面试题 并发_Java 并发面试题(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python控制单片机keil_PCF8
- 下一篇: java线程主要状态及转换_Java线程