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();
}
}
}
本文介绍了两种使用Java创建线程的方法。第一种方法是通过实现Runnable接口并借助Thread类来启动线程。第二种方法是通过继承Thread类并重写run方法来创建线程。文章通过具体的代码示例展示了如何实例化这两种类型的线程,并调用它们的服务方法。

被折叠的 条评论
为什么被折叠?



