请你说说多线程

得分点 线程和进程的关系、为什么使用多线程 标准回答 线程是操作系统调度的最小单元,它可以让一个进程并发地处理多个任务,也叫轻量级进程。所以,在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈、局部变量,并且能够共享进程内的资源。由于共享资源,处理器便可以在这些线程之间快速切换,从而让使用者感觉这些线程在同时执行。 总的来说,操作系统可以同时执行多个任务,每个任务就是一个进程。进程可以同时执行多个任务,每个任务就是一个线程。一个程序运行之后至少有一个进程,而一个进程可以包含多个线程,但至少要包含一个线程。 使用多线会给开发人员带来显著的好处,而使用多线程的原因主要有以下几点:

\1. 更多的CPU核心 现代计算机处理器性能的提升方式,已经从追求更高的主频向追求更多的核心发展,所以处理器的核心数量会越来越多,充分地利用处理器的核心则会显著地提高程序的性能。而程序使用多线程技术,就可以将计算逻辑分配到多个处理器核心上,显著减少程序的处理时间,从而随着更多处理器核心的加入而变得更有效率。

\2. 更快的响应时间 我们经常要针对复杂的业务编写出复杂的代码,如果使用多线程技术,就可以将数据一致性不强的操作派发给其他线程处理(也可以是消息队列),如上传图片、发送邮件、生成订单等。这样响应用户请求的线程就能够尽快地完成处理,大大地缩短了响应时间,从而提升了用户体验。 3. 更好的编程模型 Java为多线程编程提供了良好且一致的编程模型,使开发人员能够更加专注于问题的解决,开发者只需为此问题建立合适的业务模型,而无需绞尽脑汁地考虑如何实现多线程。一旦开发人员建立好了业务模型,稍作修改就可以将其方便地映射到Java提供的多线程编程模型上。

现代操作系统中,进程是分配资源的最小单位,运行一个程序,就创建一个进程,一个进程里可以包括多个线程,线程是系统调度的基本单位, 每个线程里都拥有各自的程序计数器,堆栈,局部变量表等属性,并且共享进程里面的资源,处理器在这些线程之间高速切换,使使用者误以为这些线程是同时执行的。 对于最简单的输出hello world程序,就包括四个线程, main,清除reference的线程,和finalize方法有关的线程,处理jvm信号的线程,

之所以使用多线程是因为多线程有个好处

1.现代计算机是多核处理器,而一个线程同一时刻只能运行在一个处理器上,对于单线程程序,同一时刻只能使用一个处理器,显然这是一种资源浪费, 而对于多线程程序,可以把计算逻辑分配给不同的处理器,极大的提高的程序的执行效率

2.可以把复杂的业务逻辑中的对数据一致性要求不强的操作,比如生成订单快照分配给其他的线程去处理(也可以使用消息队列),极大的提高了程序的响应时间

3.java提供了一个良好的多线程模型,能使开发者专注于业务的开发。

点赞

当前页面评论已关闭。

隐藏
变装