精华内容
下载资源
问答
  • 多线程的优点

    2018-08-16 22:44:04
    多线程的优点 原文:http://tutorials.jenkov.com/java-concurrency/benefits.html 作者:Jakob Jenkov 翻译:古圣昌 校对:欧振聪 尽管面临很多挑战,多线程有一些优点使得它一直被使用。这些优点是: 资源利用...

    多线程的优点

    原文:http://tutorials.jenkov.com/java-concurrency/benefits.html

    作者:Jakob Jenkov        翻译:古圣昌            校对:欧振聪

    尽管面临很多挑战,多线程有一些优点使得它一直被使用。这些优点是:

    • 资源利用率更好
    • 程序设计在某些情况下更简单
    • 程序响应更快

     

    资源利用率更好

    想象一下,一个应用程序需要从本地文件系统中读取和处理文件的情景。比方说,从磁盘读取一个文件需要5秒,处理一个文件需要2秒。处理两个文件则需要:

    1 5秒读取文件A
    2 2秒处理文件A
    3 5秒读取文件B
    4 2秒处理文件B
    5 ---------------------
    6 总共需要14

    从磁盘中读取文件的时候,大部分的CPU时间用于等待磁盘去读取数据。在这段时间里,CPU非常的空闲。它可以做一些别的事情。通过改变操作的顺序,就能够更好的使用CPU资源。看下面的顺序:

    1 5秒读取文件A
    2 5秒读取文件B + 2秒处理文件A
    3 2秒处理文件B
    4 ---------------------
    5 总共需要12

    CPU等待第一个文件被读取完。然后开始读取第二个文件。当第二文件在被读取的时候,CPU会去处理第一个文件。记住,在等待磁盘读取文件的时候,CPU大部分时间是空闲的。

    总的说来,CPU能够在等待IO的时候做一些其他的事情。这个不一定就是磁盘IO。它也可以是网络的IO,或者用户输入。通常情况下,网络和磁盘的IO比CPU和内存的IO慢的多。

    程序设计更简单

    在单线程应用程序中,如果你想编写程序手动处理上面所提到的读取和处理的顺序,你必须记录每个文件读取和处理的状态。相反,你可以启动两个线程,每个线程处理一个文件的读取和操作。线程会在等待磁盘读取文件的过程中被阻塞。在等待的时候,其他的线程能够使用CPU去处理已经读取完的文件。其结果就是,磁盘总是在繁忙地读取不同的文件到内存中。这会带来磁盘和CPU利用率的提升。而且每个线程只需要记录一个文件,因此这种方式也很容易编程实现。

    程序响应更快

    将一个单线程应用程序变成多线程应用程序的另一个常见的目的是实现一个响应更快的应用程序。设想一个服务器应用,它在某一个端口监听进来的请求。当一个请求到来时,它去处理这个请求,然后再返回去监听。

    服务器的流程如下所述:

    1 while(server is active){
    2     listen for request
    3     process request
    4 }

    如果一个请求需要占用大量的时间来处理,在这段时间内新的客户端就无法发送请求给服务端。只有服务器在监听的时候,请求才能被接收。另一种设计是,监听线程把请求传递给工作者线程(worker thread),然后立刻返回去监听。而工作者线程则能够处理这个请求并发送一个回复给客户端。这种设计如下所述:

    1 while(server is active){
    2     listen for request
    3     hand request to worker thread
    4 }

    这种方式,服务端线程迅速地返回去监听。因此,更多的客户端能够发送请求给服务端。这个服务也变得响应更快。

    桌面应用也是同样如此。如果你点击一个按钮开始运行一个耗时的任务,这个线程既要执行任务又要更新窗口和按钮,那么在任务执行的过程中,这个应用程序看起来好像没有反应一样。相反,任务可以传递给工作者线程(word thread)。当工作者线程在繁忙地处理任务的时候,窗口线程可以自由地响应其他用户的请求。当工作者线程完成任务的时候,它发送信号给窗口线程。窗口线程便可以更新应用程序窗口,并显示任务的结果。对用户而言,这种具有工作者线程设计的程序显得响应速度更快。

    原创文章,转载请注明: 转载自并发编程网 – ifeve.com

    展开全文
  • 1.1、进程与多线程的概念、多线程的优点 1.1.1、进程与多线程的概念 进程:是受操作系统管理的基本运行单元。 线程:可理解为在进程中独立运行的子单元。 1.1.2、多线程的优点 示例:任务1是等待远程服务器...

    Java多线程技能

    Java多线程的学习起始是理解Thread类中的核心方法,需要掌握如下关键:

    • 线程的启动
    • 如何使线程暂停
    • 如何使线程停止
    • 线程的优先级
    • 线程安全相关性问题

    1.1、进程与多线程的概念、多线程的优点

    1.1.1、进程与多线程的概念
    • 进程:是受操作系统管理的基本运行单元。
    • 线程:可理解为在进程中独立运行的子单元。
    1.1.2、多线程的优点

    示例:任务1是等待远程服务器返回数据,以便进行后期处理,耗时10秒,任务2是返回本地数据,耗时1秒;两任务完全独立、互补相关。

    • 单线程情况下:需要等待任务1先处理,此时CPU一直处于等待状态(空运行),任务2需要在10秒后才能运行。
      在这里插入图片描述
    • 多线程情况下:CPU在任务1和任务2之间来回切换,使得任务2不必等到10秒后再运行。
      在这里插入图片描述

    单线程与多线程对比:

    对比项 单线程 多线程
    执行方式 排队执行(同步) 切换执行(异步)
    CPU利用率

    注意:多线程是异步的,但是不要把Eclipse里代码的顺序当成线程执行的顺序,线程被调用的时机是随机的

    1.1.3、多线程的三大特性
    • 原子性:是指一个操作是不可中断的。即使是多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。
      • 实质:线程安全问题
    • 可见性:是指当一个线程修改了某一个共享变量的值,其他线程是否能够立即知道这个修改
      • 实质:java内存模型
    • 有序性:在并发时,程序的执行可能会出现乱序。给人的直观感觉就是:写在前面的代码,会在后面执行。有序性问题的原因是因为程序在执行时,可能会进行指令重排,重排后的指令与原指令的顺序未必一致。
      • 实质:join、wait、notfi(多线程之间通讯)
    展开全文
  • 使用多线程的优点

    2019-10-05 12:55:10
    多线程的优点: 1.提高应用程序的响应。对图形化界面更有意义,可增加用户体验。 2.提高计算机系统CPU的利用率 3.改善程序结构。将既长又复杂的进程分为多个线程,独立运行,利于理解和修改 java中的线程分为两个类...

    问题:只使用单个线程完成多个任务(调用多个方法),肯定比用多个线程来完成用的时间更短,为何扔需要多线程呢?

    多线程的优点:
    1.提高应用程序的响应。对图形化界面更有意义,可增加用户体验。
    2.提高计算机系统CPU的利用率
    3.改善程序结构。将既长又复杂的进程分为多个线程,独立运行,利于理解和修改
    java中的线程分为两个类:一种是守护线程,一种是用户线程
    ①他们在几乎每个方面都是相同的,唯一的区别是判断jvm何时离开
    ②守护线程是用来服务用户线程的,通过statr()方法前调用thread.setDaemon(true)可以把一个用户线程
    变成一个守护线程
    ③java垃圾回收就是一个典型的守护线程
    ④若jvm中都是守护线程,当前jvm将退出
    线程的生命周期
    新建:当一个Thread类或其他子类的对象被声明并创建时。新生的线程对象处于新建状态
    就绪:处于新建状态的线程被start()后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件
    运行:当就绪的线程被调度并获得处理器资源时。便进入运行状态,run()方法定义了线程的操作和功能、
    阻塞:在某种特殊情况下,被认为挂起或执行输入输出操作时,让出 CPU并临时中止自己的执行,进入阻塞状态
    死亡:线程完成了他们的全部工作或线程被提前强制性地中止
    在这里插入图片描述

    展开全文
  • 主要介绍了浅谈Java多线程的优点及代码示例,还是比较不错的,这里分享给大家,需要的朋友可以参考。
  • 多线程的优点:  举个例子,一个人两天可以完成的刚工作(一条线程工作两天),那么两个人一天就可以完成了(两条线程工作一条)。很明显,工作效率翻倍,下面画个图,可以看一下:  当然这只是在广义上的讲解...

    进程:

      进程可以理解为一个正在运行的程序,每一个运行的程序都是一个进程。

    线程:

      线程可以为在进程中运行的子任务,一个进程可以有N个线程(N <= 1)。

    多线程的优点:

      举个例子,一个人两天可以完成的刚工作(一条线程工作两天),那么两个人一天就可以完成了(两条线程工作一条)。很明显,工作效率翻倍,下面画个图,可以看一下:

      当然这只是在广义上的讲解,其实底层的CPU的运行也是单线程的,只不过如果一个程序是多线程的话,CPU会以非常快的速度在不同线程之间来回切换,让人误以为是多线程。

     

    转载于:https://www.cnblogs.com/itiande/p/9511019.html

    展开全文
  • 多线程的优点及缺点

    千次阅读 2015-10-16 07:50:56
    使用多线程的优点: 1:资源利用率更高。 例如从磁盘读取文件的时候,大部分的CPU时间是用于等待磁盘去读取数据,在这段时间里,CPU非常空闲,通过改变操作的顺序,就能更好的使用CPU资源 2:程序响应更快 例如...
  • 多线程的优点原文:http://tutorials.jenkov.com/java-concurrency/benefits.html作者:Jakob Jenkov 翻译:古圣昌 校对:欧振聪尽管面临很多挑战,多线程有一些优点使得它一直被使用。这些优点是:资源利用率更好...
  • * 使用Runnable接口实现多线程的优点 * 因为java是单继承的 一个类的父类继承了Thread那么,当我们将该类加入多线程时 就只能使用Runable接口了 * 多线程必使用Runnable接口 */ class Aserver extends Thread{ ...
  • JavaJavaJava中使用RunnableRunnableRunnable接口创建多线程的优点 1.避免单继承的局限性。 一个类可以实现多个接口,从而实现多个方法 。 2.增强了程序的扩展性,降低了程序的耦合性(解耦) 简单来说就是将设置线程...
  • 优点 1.提高应用程序的响应,对图形化界面更有意义,增强用户体验 ...守护线程是用来服务用户线程的,通过start()方法前调用Thread,setDaemon(true)可以把用户线程变成一个守护线程 当JVM中都是守护线程,...
  • 多线程的优点/作用

    千次阅读 2020-04-13 20:47:13
    多线程的作用 1、发挥多核CPU的优势 如果是单线程的程序,那么在双核CPU上就浪费了50%,在4核CPU上就浪费了75%。多核CPU上的多线程它能让你的多段逻辑同时工作,多线程,可以真正发挥出多核CPU的优势来,达到充分...
  • 多线程的优点意义

    千次阅读 2017-09-13 19:05:18
    在操作系统中可以有个进程,一个进程中又可以有一个或线程。进程是在自己独立内存空间中运行,所以进程与进程之间是不共享内存线程是把进程给分割开,每个线程之间可以共享系统分配给这个进程内存...
  • 2. 多线程的优点

    2020-11-24 14:06:46
    尽管面临很多挑战,多线程有一些优点使得它一直被使用。这些优点是: 资源利用率更好:主要是更充分利用cpu资源 程序设计在某些情况下更简单 程序响应更快:以服务器应用为例 资源利用率更好 想象一下,一个应用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,530
精华内容 2,612
关键字:

多线程的优点