Java多线程使用场景

使用多线程就必定效率高吗? 有时候使用多线程并非为了提升效率,而是使得CPU可以同时处理多个事件。多线程

使用场景1

为何了不阻塞主线程,启动其余线程来作耗时的事情。app

好比app开发中耗时的操做都不在UI主线程中作。性能

使用场景2

实现响应更快的应用程序, 即主线程专门监听用户请求,子线程用来处理用户请求。以得到大的吞吐量。
感受这种状况下,多线程的效率未必高。 这种状况下的多线程是为了避免必等待, 能够并行处理多条数据。线程

好比JavaWeb的就是主线程专门监听用户的HTTP请求,而后启动子线程去处理用户的HTTP请求。事件

使用场景3

某种优先级虽然很低的服务,可是却要不定时去作。开发

好比Jvm的垃圾回收。效率

使用场景4

某种任务,虽然耗时,可是不耗CPU的操做时,开启多个线程,效率会有显著提升。
好比读取文件,而后处理。 磁盘IO是个很耗费时间,可是不耗CPU计算的工做。 因此能够一个线程读取数据,一个线程处理数据。确定比
一个线程读取数据,而后处理效率高。 由于两个线程的时候充分利用了CPU等待磁盘IO的空闲时间。垃圾回收

曾几什么时候想过使用多线程读取磁盘数据, 可是读取磁盘数据的性能瓶颈是IO,而不是CPU。 使用多线程的目的是为了避免让CPU闲下来,明显不适合用于读取磁盘数据。请求

相关文章
相关标签/搜索