package com.tddinaction.concurrency.threadstartstop;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
public class Server {
private Runnable serverDaemon = new Runnable() {
public void run() {
try {
System.out.println("The server is now supposedly running...");
Object obj = new Object();
synchronized (obj) {
obj.wait();
}
} catch (InterruptedException e) {
System.out.println("The server thread was interrupted");
}
}
};
private ThreadFactory threadFactory = Executors.defaultThreadFactory();
private ExecutorService executor;
public void setThreadFactory(ThreadFactory threadFactory) {
this.threadFactory = threadFactory;
}
public void start() {
executor = Executors.newSingleThreadExecutor(threadFactory);
executor.execute(serverDaemon);
}
public void stop() {
executor.shutdownNow();
}
}