关于线程中的run与start方法详解
在学习的初期,常常会将`run`方法和`start`方法混淆。尽管两者表面上看起来在使用时效果似乎相似,但它们在实质上是两个截然不同的方法。
run方法的解读:
`run`方法实质上是一个普通的方法。当你在主程序中调用它时,其实是让主程序去执行该方法内的代码。如果在执行此方法时,当前线程的时间片还未用完,那么代码会继续执行;但调用`run`方法并不会开启新的线程。
start方法的解读:
相对而言,`start`方法则是真正创建并启动一个新线程来执行任务。一旦调用此方法,线程的状态就会被设置为就绪状态,准备运行。这和`run`方法有着本质的区别,因为`start`方法并不会立即执行,而是为新线程的启动做好准备。
二者的主要区别:
1. 方法性质:`run`是普通方法,而`start`是用于启动新线程的方法。
2. 执行速度与效果:调用`run`会直接执行方法内的代码(如果时间片未用完);而调用`start`则是为新线程的启动做准备,不会立即执行,而是将线程状态改为就绪。
3. 调用次数:由于`run`是普通方法,所以可以被多次调用;但`start`方法每次只能被调用一次来启动一个新线程。尝试多次调用start会抛出“IllegalThreadStateException”非法线程状态异常。
深入理解: