1.继承Thread类
package a;
public class ExtendsThread extends Thread{
public static void main(String[] args){
new ExtendsThread().printNumber();
}
@Override
public void run(){
this.printNumber();
}
public void printNumber() {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
}
2.实现Runnable接口
package a;
/**
* @author 10361
*/
public class ImplementRunnable implements Runnable{
public void multiImplementRunnable(){
for (int i = 0; i < 10; i++) {
Runnable runnable = () ->{
for (int j = 0; j < 10; j++) {
System.out.println(j);
}
};
new Thread(runnable).start();
}
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
}
3.实现Callable接口
package f;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
/**
* @author 10361
*/
public class ImplementCallable {
public static void main(String[] args) throws ExecutionException, InterruptedException {
List<String> result = ImplementCallable.createThread();
for (String temp:result) {
System.out.println(temp);
}
}
public static List<String> createThread() throws ExecutionException, InterruptedException {
List<String> list = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
int finalI = i;
FutureTask<String> futureTask = new FutureTask<String>(()->{
BigDecimal sum = BigDecimal.valueOf(1);
for(int j = finalI; j>0; j--){
sum = sum.multiply(BigDecimal.valueOf(finalI));
}
return Thread.currentThread().getName()+":完成啦!" + sum.toString();
});
new Thread(futureTask).start();
list.add(futureTask.get());
}
return list;
}
}