一、继承Thread类,重写run()方法
public class MyThread extends Thread{
public void run(){
System.out.println("MyThread.run()");
}
public static void main(String[] args) {
MyThread myThread1=new MyThread();
MyThread myThread2=new MyThread();
myThread1.start();
myThread2.start();
}
}
二、实现Runnable接口,实现run()方法
public class MyThread implements Runnable{
@Override
public void run(){
System.out.println("MyThread.run()");
}
public static void main(String[] args) {
MyThread myThread1=new MyThread();
MyThread myThread2=new MyThread();
Thread thread1=new Thread(myThread1);
Thread thread2=new Thread(myThread2);
thread1.start();
thread2.start();
}
}
三、实现Callable接口,实现call()方法
public class MyThread implements Callable<Integer>{
public static void main(String[] args) {
Callable<Integer> oneCallable = new MyThread();
//由Callable<Integer>创建一个FutureTask<Integer>对象:
FutureTask<Integer> oneTask = new FutureTask<Integer>(oneCallable);
//注释:FutureTask<Integer>是一个包装器,它通过接受Callable<Integer>来创建,它同时实现了Future和Runnable接口。
//由FutureTask<Integer>创建一个Thread对象:
Thread oneThread = new Thread(oneTask);
oneThread.start();
try {
Integer sum = (Integer) oneTask.get();
System.out.println(sum);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
//至此,一个线程就创建完成了。
}
@Override
public Integer call() throws Exception {
int sum=0;
for(int i=0;i<9;i++){
sum+=i;
}
return sum;
}
}
四、使用线程池的方法,实现Runnable接口,实现run()方法
public class MyThread implements Runnable{
@Override
public void run() {
System.out.println("MyThread.run()");
}
public static void main(String[] args) {
//创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(5);
MyThread threadPool = new MyThread();
for(int i =0;i<5;i++){
//为线程池分配任务
executorService.submit(threadPool);
}
//关闭线程池
executorService.shutdown();
}
}