线程的start()与run()

Thread是Runnable的实现类

要使用start()方法必须创建或者继承Thread类。

run方法和start()方法的区别:

如果一个子类重写了方法如下:

image-20240819100659489

1
2
3
4
5
public static void main(String[] args) {
myThread th1 = new myThread();
th1.run();
th1.start();
}

想想会是什么结果?

image-20240819100806477

run()调用主线程,start()则会启动新线程,执行run()的方法


线程的join()有什么用?

会阻塞当前调用此方法的线程,要求完成后,才会继续执行下面的代码。

1
2
3
4
5
6
7
8
9
10
11
12
Thread thread = new Thread(new File());
Thread thread1 = new Thread(new web());
thread.start();
thread1.start();
try {
thread.join();
thread1.join();
}catch (InterruptedException ex){
ex.printStackTrace();
}
System.out.println("所有的任务都已完成");
System.out.println("开始执行其他任务..........");

thread和thread1线程执行完后,才会继续往下走

满足一些线程需要同步数据后,才会继续往下走。


总结

如果不使用start()方法,就不需要使用thread线程,因为使用到的是多线程,这不符合多线程的应用。

join()方法用来阻塞当前线程的执行。

主线程是main

往下就是 Thread-0 -1 - 2 -3 -4…………

使用多线程编程中,start()和jion()是非常重要的,各有个的作用,合理使用它们可以实现复杂的并发控制和任务同步。