方式一 继承Thread类
dome实现
/**
* 继承Thread类实现多线程
*/
public class TestThread extends Thread{
/**
* 重写run方法
*/
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("第"+(i+1)+"次打印");
}
}
/**
* 打印测试
* @param args
*/
public static void main(String[] args) {
TestThread testThread = new TestThread();
//自动调用线程类的run方法
testThread.start();
}
}
运行结果
方式二 实现Runnable接口
dome实现
/**
* 实现Runnable接口
*/
public class TestRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("TestRunnable类第"+(i+1)+"次打印");
}
}
/**
* 打印测试
* @param args
*/
public static void main(String[] args) {
//创建业务实现类
TestRunnable testRunnable = new TestRunnable();
//创建代理线程
Thread thread = new Thread(testRunnable);
//线程启动
thread.start();
}
}
运行结果
方式三 实现Callable接口
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* 实现Callable接口
*/
public class TestCallable implements Callable<Integer> {
@Override
public Integer call() throws Exception {
int i;
for (i = 0; i < 20; i++) {
System.out.println("TestCallable类第" + (i + 1) + "次打印");
}
return i;
}
/**
* 测试打印
* @param args
*/
public static void main(String[] args) {
//获取线程池服务
ExecutorService es = Executors.newCachedThreadPool();
//提交处理逻辑
es.submit(new TestCallable());
//关闭服务
es.shutdown();
}
}
运行结果