线程的 run() 方法和 start() 方法是 Java 多线程中的两个重
要方法。
1. run() 方法是线程的执行体,线程启动后会执行 run() 方法中的代码,当 run() 方法执行完毕后,线程便终止了。
2. start() 方法用于启动一个新线程,它会创建一个新的线程,并在新的线程中执行 run() 方法中的代码。在调用 start() 方法的时候,JVM 会为新的线程分配资源,并执行该线程中的 run() 方法。需要注意的是,直接调用 run() 方法并不能启动一个新的线程,只是在当前线程中直接执行 run() 方法中的代码,不会创建一个新的线程。因此,如果想要启动一个新的线程,必须使用 start() 方法。
总结: 调用 start 方法方可启动线程并使线程进入就绪状态,而 run 方法只是 thread 的一个普通方法调用,还是在当前线程里执行
并行和并发有什么区别
并行和并发是计算机领域中常用的概念,两个术语都涉及同时执行多个任务的能力,但它们的实现方式略有不同。
并行是指同时执行多个任务,例如在多个处理器上同时处理多个任务。每个任务都是独立的,并且可以并行运行,从而提高系统的吞吐量。如果每个处理器都在独立执行自己的任务,那么就实现了并行。
举个例子,假设我们有一个计算机集群,其中有
10
个处理器。如果我们将一个程序分成10
个独立的任务,并将每个任务分配给一个处理器,则每个处理器都可以独立执行自
己的任务。这就是并行的一个例子。
并发是指在一段时间内同时处理多个任务,注意这里是“同时处理”而不是“同时执行”。这是因为在处理器中只有一个处理器内核,而同时执行多个任务是不可能的。因此,处理器通过轮流处理不同的任务,在不同任务之间切换,从而实现并发处理。
举个例子,假设我们有一个
web
服务器,收到了多个客户端的请求。这些请求需要在服务器上处理,但是由于服务器只有一个处理器内核,因此服务器必须轮流处理不同的
请求,这样看起来就像是所有请求都同时在处理。这就是并发的一个例子。总之, 并行处理是在多个处理器上同时执行多个任务,而并发处理是在一个处理器内核上轮流处理多个任务。
线程和进程的区别
进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程,但一个进程一般有多个线程。进程在运行过程中,需要拥有独立的内存单元,否则如果申请不到,就会挂起。而多个线程能共享内存资源,这样就能降低运行的门槛,从而效率更高。
线程是是cpu调度和分派的基本单位,在实际开发过程中,一般是考虑多线程并发。