Java线程的创建方式
- 继承Thread类,重新父类中的run()方法
- 实现Runnable接口
- 使用线程池创建线程。
继承Thread类,重新父类中的run()方法
public class Main extends Thread
{
public Main(String name){
super(name);
}
@Override
public void run() {
for(int i=0;i<3;i++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
System.out.println(this.getName()+"---"+i);
}
}
public static void main(String[] args) {
Thread th1 = new Main("朱清時");
th1.start();
Thread th2 = new Main("肖俊奇");
th2.start();
}
}
输出结果为:
实现Runnable接口
public class Main {
public static void main(String[] args) {
Runab runab1 = new Runab("朱清時");
Runab runab2 = new Runab("肖俊奇");
Thread th1 = new Thread(runab1);
th1.start();
Thread th2 = new Thread(runab2);
th2.start();
}
}
class Runab implements Runnable{
private String name;
public Runab(String name) {
// TODO 自动生成的构造函数存根
this.name = name;
}
@Override
public void run() {
// TODO 自动生成的方法存根
for(int i=0;i<3;i++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
System.out.println(name+"---"+i);
}
}
}
输出结果为:
使用线程池创建线程
public class Main {
public static void main(String[] args) {
//创建容量为5的线程池
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {
Runnable syncRunnable = new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
//将线程添加到线程池中
executorService.execute(syncRunnable);
}
}
}
输出结果为: