java面试题 并发_Java 并发面试题(一)
在我招聘和找工作的過程中,java 并發(fā)是非常重要的考察內(nèi)容。
這篇文章中的面試題目來自并發(fā)編程,非常好的學(xué)習(xí)網(wǎng)站,題目來源?http://ifeve.com/javaconcurrency-interview-questions-base/
a. 多線程基礎(chǔ)
0.?java中有幾種方法可以實(shí)現(xiàn)一個(gè)線程?
在我招聘的過程中,大部分面試者都只能回答繼承 ?Thread 類,這個(gè)回答是不能讓面試官滿意的。由于 java 的單繼承特性,如果繼承 Thread 類之后,自身創(chuàng)建的線程類就失去了靈活性,因此更好的方法是實(shí)現(xiàn) Runnable 接口,實(shí)際上 Thread 類也是實(shí)現(xiàn)了 Runnable 接口。
那么如何啟動(dòng)線程呢?先看 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 }
運(yùn)行結(jié)果:
9 ---->running10 ----> running
從這個(gè)簡(jiǎn)單的例子可以看出,Thread 類啟動(dòng)線程是通過調(diào)用 start() 方法實(shí)現(xiàn)的,而 Runnable 接口只提供了 run() 方法。所以第二個(gè)問題來了
1. start() 方法和 run() 有什么區(qū)別?
從 JDK 7 文檔中可以看到 start() 方法創(chuàng)建了一個(gè)新的線程并調(diào)用了 run() 方法,如果直接在代碼中調(diào)用 run() 方法,那么實(shí)際上是在當(dāng)前線程執(zhí)行而沒有創(chuàng)建新的線程。
那么如何啟動(dòng)實(shí)現(xiàn) Runnable 接口的線程呢?可以對(duì)上面的例子進(jìn)行修改,Thread 類的構(gòu)造方法可以允許傳入一個(gè) Runnable 對(duì)象,利用這一點(diǎn)
總結(jié)
以上是生活随笔為你收集整理的java面试题 并发_Java 并发面试题(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python控制单片机keil_PCF8
- 下一篇: java线程主要状态及转换_Java线程