2014-09-28 99 views
3

我正在瀏覽我公司中發現作者(已離開)的舊項目(Java),在不擴展Thread類或實現Runnable接口的情況下創建並運行線程。一件顯而易見的事情是,這個班是單身班。沒有使用線程池,或者java的新併發包。代碼片段概述如下 -在沒有擴展的情況下創建線程並執行

import java.sql.*; 
import org.apache.log4j.*; 
import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.sql.DataSource; 

public class DataLookup 
{ 

    private static DataLookup _ref; 

    private DataLookup() 
    { 
    } 

    public static DataLookup getInstance() 
    { 
    if (_ref == null) 
    { 
     synchronized (DataLookup.class) 
     { 
     if (_ref == null) 
     { 
      _ref = new DataLookup(); 
     } 
     } 
     return _ref; 
    } 
    } 
    /* 
    * Implementation Logic 
    */ 

    public void writeRecord(String a, String b, String c) 
    { 
    /* 
    * Implementation Logic 
    */ 
    Thread writerThread = new Thread() 
    { 
     public void run() 
     { 
     /* 
     * Implementation Logic 
     */ 
     } 
    } 
    writerThread.start(); 
    } 
} 

這種方法是如何工作的 - 使用線程而不從Thread類擴展或實現Runnable接口? 使用這種方法有什麼優點和缺點(沒有擴展和實現)。

+1

匿名類是擴展另一類的類。這就是你在這裏所做的,Thread的匿名子類。 – 2014-09-28 18:34:59

+0

http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html – 2014-09-28 18:36:13

回答

7
Thread writerThread = new Thread() 
{ 
    public void run() 
    { 
    /* 
    * Implementation Logic 
    */ 
    } 
} 

此代碼創建一個擴展Thread匿名類

匿名類使您能夠使代碼更加簡潔。它們使您能夠同時聲明和實例化一個類。除了沒有名字之外,它們就像本地的課程。如果您只需要使用一次本地課程,請使用它們。

以上報價取自The Java Tutorials,您可以在這裏閱讀更多關於它們的信息。

相關問題