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