【java基礎】多執行緒匿名內部類和lambda建立方式,及多執行緒中的兩個面試題
阿新 • • 發佈:2018-12-26
一、可以用匿名類和lambda兩個種方式建立多執行緒。
1.利用匿名內部類建立多執行緒並開啟。
new Thread() {//建立方式1 public void run() { for(int x=0; x<50; x++) { System.out.println(Thread.currentThread().getName()+"....x="+x); } } }.start(); Runnable r = new Runnable() {//建立方式2 public void run() { for(int x=0; x<50; x++) { System.out.println(Thread.currentThread().getName()+"....z="+x); } } }; new Thread(r).start();
2.利用lambda方式建立多執行緒並開啟。
Runnable r = ()->{
for(int x=0; x<50; x++){
System.out.println(Thread.currentThread().getName()+"....z="+x);
}
};
new Thread(r).start();
二、兩個面試題
1.第一題
class Test implements Runnable { public void run(Thread t) {} } //如果錯誤 錯誤發生在哪一行? //答案:錯誤在第一行,應該被abstract修飾,因為run()抽象方法沒有被重寫。
2.第二題
class ThreadTest
{
public static void main(String[] args)
{
new Thread(new Runnable()
{
public void run()
{
System.out.println("runnable run");
}
})
{
public void run()
{
System.out.println("subThread run");
}
}.start();
}
}
問題:在Thread方法中引入了一個多執行緒任務的引數,該引數重寫了run()方式,同時又用匿名內部類的方式重寫了run()方法。問,將會輸出哪個?
答案: