创建没有扩展和实现的线程

时间:2014-09-28 18:34:00

标签: java multithreading

我正在我公司的旧项目(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接口? 使用这种方法有哪些优点和缺点(没有扩展和实现)。

2 个答案:

答案 0 :(得分:8)

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

此代码创建一个扩展Thread匿名类

  

匿名类使您可以使代码更简洁。它们使您能够同时声明和实例化一个类。他们就像当地的班级,除了他们没有名字。如果您只需要使用本地类一次,请使用它们。

以上引用来自The Java Tutorials,您可以在其中详细了解它们。

答案 1 :(得分:0)

可以在不实现或扩展Runnable接口和Thread类的情况下完成。

 Thread t = new Thread()
            {
                public void run() {

                        try {

                        } catch (IllegalArgumentException e) {

                        }
                }
            };
            t.start();