Thread类中start()和run()方法的区别。
start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程,进而调用run()方法来执行任务,
而单独的调用run()就跟调用普通方法是一样的,已经失去线程的特性了。
因此在启动一个线程的时候一定要使用start()而不是run()
线程调用start方法后不会立即运行此线程,而是将该线程处于就绪状态;
两种方法的区别:
1.start方法 用 start方法来启动线程,是真正实现了多线程, 通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法。
但要注意的是,此时无需等待run()方法执行完毕,即可继续执行下面的代码。所以run()方法并没有实现多线程。
2.run方法 run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的
notify方法不能确切唤醒某个整处于等待状态的线程,而是需要通过其他线程来调用该等待线程中的notify方法来唤醒该线程;
wait方法会释放掉锁。