接口繼承的寫法1:在類名后寫上繼承的接口,然后在類的內部重寫方法
示例:
1 class Consumer implements Runnable{ 2 3 private BlockingQueue<Integer> queue; 4 5 public Consumer(BlockingQueue<Integer> queue){ 6 this.queue = queue; 7 } 8 9 @Override 10 public void run() { 11 try { 12 while (true) { 13 Thread.sleep(new Random().nextInt(1000)); 14 queue.take(); 15 System.out.println(Thread.currentThread().getName()+"消費"+queue.size()); 16 } 17 } catch (InterruptedException e) { 18 e.printStackTrace(); 19 } 20 } 21 }
接口繼承的寫法2:直接new 一個接口類型的對象,再使用匿名內部類的方式重寫方法
示例:
1 // 1.JDK普通線程池 2 @Test 3 public void testExecutorService() { 4 Runnable task = new Runnable() {//實現Runnable接口,這里是匿名實現,方法中寫要執行的方法 5 @Override 6 public void run() { 7 System.out.println("Hello ExecutorService"); 8 // logger.debug("Hello ExecutorService"); 9 } 10 }; 11 12 for (int i = 0; i < 10; i++) { 13 executorService.submit(task);//提交任務給線程池,就會安排線程處理 14 } 15 16 sleep(10000); 17 } 18 19 //Test中的線程執行完了就會結束,不會等一下看話有沒有任務,因此需要定義一個sleep方法讓這些線程等一下 20 private void sleep(long m) {//sleep方法經常拋異常,封裝一下,處理一下異常 21 try { 22 Thread.sleep(m); 23 } catch (InterruptedException e) { 24 e.printStackTrace(); 25 } 26 }