之前有简单的介绍过多线程的几种实现方式,那么我们现在开始写几篇文章详细去介绍一下多线程的实现方式和一些原理,今天先来介绍一下我们学习多线程的第一种方式,我们使用继承Thread类来实现!
话不多说,直接上代码!
继承Thread类基础代码
// 首先我们创建一个类来继承Thread类
public class MyThread extends Thread{
// 然后我们需要重写run方法(非常重要,run方法的方法体中是我们真正执行的代码)
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
}
class MyThreadTest {
public static void main(String[] args) {
// 创建MyThread对象,调用start()方法,这里要知道start方法的作用!
// start方法的作用有两个! 第一个是启动该线程,第二个是调用run()方法
MyThread myThread = new MyThread();
myThread.start();
}
}
上面的代码中我们其实已经说明了使用Thread类实现多线程的步骤
步骤解释:
①:继承Thread类
②:重写run方法
③:创建继承Thread类的实例对象
④:调用该对象的start方法
// start方法和run方法都继承于Thread类
设置多线程名字及多个线程运行
那么我们现在来实现一下多个线程运行的代码!
这之前我们先学习两个基础的方法
首先我们需要给线程修改一下线程名,方便我们区分是否使用了多线程
getName和setName使用方式:
MyThread myThread = new MyThread();
myThread.getName();
myThread.setName("线程1");
这里还有一个小技巧是获取当前线程的方法,我们使用Thread.currentThread() 因为这是被static修饰的静态方法,所以我们可以直接使用Thread类去调用
那么我们先来真正去运行多个线程
public class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + "" + i);
}
}
}
class MyThreadTest {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.setName("线程1-");
myThread.start();
MyThread myThread1 = new MyThread();
myThread1.setName("线程2-");
myThread1.start();
}
}
这边我们还是和上面的基本一致,只不过发现我们创建了两个MyThread对象,因为如果我们使用同一个MyThread对象去调用start方法的话,则会报出IllegalThreadStateException异常,大致意思就是不能在一个Thread中多次调用start方法,所以我们需要创建两个对象去调用,我们也给两个对象设置了不同的名字,我们来看一下结果:
那到这里就结束了,我们下次学习第二种实现方式,实现Runnable接口的实现方式
如有错误欢迎指出,感谢观看