Service.java
public interface Service {
public void run();
}
WorkService.java
public class WorkService implements Service {
public void run() {
// TODO Auto-generated method stub
System.out.println("Hello, work!");
}
}
方式一:
RunService.java
public class RunService implements Runnable {
private Service service = null;
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(service != null) {
service.run();
}
}
public Service getService() {
return service;
}
public void setService(Service service) {
this.service = service;
}
}
ThreadFactory.java
public class ThreadFactory {
public static void create(Class className) {
RunService service = new RunService();
try {
service.setService((Service)className.newInstance());
new Thread(service).start();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Main.java
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ThreadFactory.create(WorkService.class);
try {
Thread.sleep(2);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Hello, work! 2 ");
}
}
方式二:
RunService.java
public class RunService extends Thread {
private Service service = null;
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(service != null) {
service.run();
}
}
public Service getService() {
return service;
}
public void setService(Service service) {
this.service = service;
}
}
ThreadFactory.java
public class ThreadFactory {
public static void create(Class className) {
RunService service = new RunService();
try {
service.setService((Service)className.newInstance());
service.start();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}