2014-09-28 115 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,您可以在这里阅读更多关于它们的信息。

相关问题