线程是java语言中不可或缺的重要功能,它能使复杂的异步代码变得更简单,从而极大地简化了复杂系统的开发,如何高效的使用并发变得越来越重要。
得当的使用线程,可以有效地降低程序的开发和维护成本,同时提升复杂应用程序的性能。线程能够将大部分的异步工作流转换成串行工作流,因此能更好地模拟人类的工作方式和交互方式。此外,线程还可以降低代码的复杂度,使代码更容易编写、阅读和维护。
创建线程的三种方式
◎定义线程类实现Runnable接口
◎定义线程类继承Thread类
◎定义线程类实现Callable接口
每个线程都是启动和执行两个步骤来操作的。其中,线程启动是调用thread类的start()方法,线程执行的任务是调用thread类的run()方法来完成其操作的。
注意,不是调用run()方法启动线程,run方法中只是定义需要执行的任务,如果调用run方法,即相当于在主线程中执行run方法,跟普通的方法调用没有任何区别,此时并不会创建一个新的线程来执行定义的任务。如下所示:
public class TestThread1 {
public static void main(String args[]){
Runner1 runner1=new Runner1();
runner1.run();//1.这里直接调用自定义线程类的run方法,为非线程操作
for(int i=0;i<100;i++){
System.out.println("Main Thread:"+i);
}
}
}
class Runner1 implements Runnable{
@Override
public void run() {