Java 单例线程 class 对象

Java Singleton Thread class object

我有一个class如下

public class JobThread implements Runnable {

    private JobService jobService;
    private long interval;

    public JobThread(JobService jobService, long interval) {
        this.jobService = jobService;
        this.interval = interval;
    }

    @Override
    public void run() {
      // some stuff
    }
}

这是 class 正在按预期进行工作。但我想把这个 class 设为单例 class。基本上这个 class 通过它的 jar 文件被多个项目使用。此 class 的参数是特定于项目的。但是,如果根据业务逻辑他们有多个 class 实例,那将毫无意义。所以我想把它做成单身人士。这样他们就不能为此 class 创建多个对象。有人可以告诉我该怎么做吗?

您可以使用标准的单例模式。在 createInstance 方法中,如果它不可用,您可以尝试获取锁 createInstance 可以抛出异常 else return the object

Lock lock = ...;
public JobInstance createInstance()
{

    if (lock.tryLock()) {
            //Create instance of your object here

      } else {
          // throw object already exist exception
    }
}   

当 运行 方法在 finalize 中完成时,您必须释放锁,以确保在 运行 崩溃而未释放锁的情况下正确清理。

您可以按照单例class规则使其成为单例class。

 public class JobThread implements Runnable
{

  private static JobService jobService;
  private static long interval;
  private static JobThread myObj;

  static
  {
    myObj = new JobThread ();
  }

  private JobThread ()
  {

  }

   @Override public void run ()
  {
    //some stuff
  }

  public static JobThread getInstance (JobService jobService_p,
                       long interval_p)
  {
    jobService = jobService_p;
    interval = interval_p;
    return myObj;
  }
}