子线程的基本用法
方法一:
定义一个线程只需要新建一个类继承自 Thread,然后重写父类的 run()方法,并在里面编写耗时逻辑即可.
class MyThread extends Thread {
    
    public void run() {
        // 处理具体的逻辑
    }
}
如何启动这个线程呢?
其实也很简单,只需要 new 出 MyThread 的实例,然后调用它的 start()方法,这样 run()方法中的代码就会在子线程当中运行了,
如下所示:  
new MyThread().start();    
方法二:
使用继承的方式耦合性有点高,更多的时候我们都会选择使用实现 Runnable 接口的方式来定义一个线程.
class MyThread implements Runnable {
    
    public void run() {
        // 处理具体的逻辑
    }
}
启动线程的方法也需要进行相应的改变
MyThread myThread = new MyThread();
new Thread(myThread).start();
当然,如果你不想专门再定义一个类去实现 Runnable 接口,也可以使用匿名类的方式,这种写法更为常见.
如下所示:  
new Thread(new Runnable() {
    
    public void run() {
        // 处理具体的逻辑
    }
}).start();