精华内容
下载资源
问答
  • 而线程开了之后(采用了多线程技术),意味着默认的线程执行自己的代码,而new的新线程也会执行自己的代码,两者是可以平行工作的。 采用了多线程技术的应用程序可以更好地利用系统资源。其主要优势在于充分利用了CPU...

    一般情况下你的程序是单线程的,结果就是由第一行执行到最后一行,或者中间有跳转,但是你执行一行代码的时候,其他行的程序代码都是等待的状态,不会去运行;而线程开了之后(采用了多线程技术),意味着默认的线程执行自己的代码,而new的新线程也会执行自己的代码,两者是可以平行工作的。

    采用了多线程技术的应用程序可以更好地利用系统资源。其主要优势在于充分利用了CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。更为重要的是,由于同一进程的所有线程是共享同一内存,所以不需要特殊的数据传送机制,不需要建立共享存储区或共享文件,从而使得不同任务之间的协调操作与运行、数据的交互、资源的分配等问题更加易于解决。

    展开全文
  • 多线程优势

    千次阅读 2015-05-18 17:55:01
    尽管多线程编程很有挑战,但它也有自己的优势,所以仍然使用多线程技术。下面是多线程的一些优势: 更好的资源利用率 某些情况下能简化程序设计 高响应程序 更好的资源利用率假设一个应用程序本地文件系统中读取...

    原文链接:http://tutorials.jenkov.com/java-concurrency/benefits.html
    尽管多线程编程很有挑战,但它也有自己的优势,所以仍然使用多线程技术。下面是多线程的一些优势:

    • 更好的资源利用率
    • 在某些情况下能简化程序设计
    • 高响应程序

    更好的资源利用率

    假设一个应用程序在本地文件系统中读取并处理文件。从磁盘中读取文件需要消耗 5 秒的时间,然后处理这个文件需要消耗 2 秒的时间。处理两个文件需要消耗:

       5 秒读文件 A
       2 秒处理文件 A
       5 秒读文件 B
       2 秒处理文件 B
    -----------------------
       总共消耗 14 秒
    

    在磁盘读取文件的时候,大部分的 CPU 时间都消耗在等待磁盘读取数据的过程中。在这个过程中, CPU 大部分处于空闲状态,其实这个空闲时间是可以被利用起来的。通过改变操作的顺序, CPU 可以被更好的利用。请看下面的操作顺序:

       5 秒读文件 A
       5 秒读文件B 同时 2 秒处理文件 A
       2 秒处理文件 B
    -------------------------
       总共消耗 12 秒
    

    CPU 会等待第一个文件读取就绪,第一个文件读取完毕以后, CPU 会向磁盘发出读取第二个文件的指令。在磁盘读取第二个文件的同时, CPU 处理第一个文件。要明白,磁盘在读取第一个文件的时候, CPU 大部分处于空闲状态(这部分的 CPU 时间没办法被利用)。

    通常, CPU 在等待 IO 的同时可以做其他的事。这个 IO 不一定是磁盘 IO ,它也可以是网络 IO 或者是来自用户的一个输入。网络和磁盘 IO 通常要比 CPU’s 和内存 IO 慢很多。

    磁盘是一种资源, CPU 也是一种资源,在磁盘工作的同时, CPU 如果也能工作就提高了资源的利用率。

    简化程序设计

    如果你通过手工编程的方式在一个单线程应用程序中按照上面的顺序读取和处理文件,你还必须得跟踪每个文件的读取和处理状态。你可以启动两个线程来代替这种手工编程的方式,每个线程负责读取和处理一个文件。每个线程在等待磁盘读取自己的文件的时候,都会被阻塞。一个线程在等待磁盘读取文件的同时如果另外一个线程的文件已经读取完毕了,这时候另外一个线程可以利用 CPU 处理部分文件。结果就是,磁盘一直处于忙碌状态,把各种文件都读取到内存中。这就提高了磁盘和 CPU 的利用率。由于每个线程只跟踪一个文件,这种情况编程也更容易实现。

    高响应程序

    把单线程应用程序改为多线程应用程序的另外一个常见的目的是为了实现高响应的应用程序。假如一个服务器应用程序在某个端口上监听输入请求。当收到一个请求以后,先处理这个请求然后再返回继续监听。一个服务器循环骨架如下:

    while (server is active) {
        listen for request
        process request
    }
    

    如果一个请求得占用很长的时间来处理,在处理这个请求的过程中,任何新的客户端向服务器发送的请求都得不到响应。只有服务器处于监听状态时(listen for request)请求才会被服务器接收到。

    另外一种设计是:监听线程把请求传递给工作线程,然后监听线程立即返回并继续监听客户端发来的请求。工作线程将会处理这个请求然后给客户端一个响应。这种设计的骨架如下:

    while (server is active) {
        listen for request
        hand request to worker thread
    }
    

    这种方式服务器监听线程将会很快地返回并继续监听。因此,更多的客户端可以向服务器发送请求,服务器的响应也更高。

    对桌面应用程序也是成立的,如果你点了一个按钮,启动了一个很耗时的任务。线程先执行任务然后再更新窗体、按钮等。在线程执行任务的时候,这个桌面应用程序会出现无法响应的状态。为了解决这个问题,可以把这个待处理的任务传递给一个工作线程来处理。在工作线程忙着处理任务的同时,窗体线程可以自由地响应用户的请求。当工作线程处理完任务后它会通知窗体线程。然后窗体线程可以根据这个任务完成的结果来更新应用程序窗体。使用了工作线程设计的应用程序将会提高对用户响应的速度。

    Next: 多线程的代价

    展开全文
  • 多线程优势和风险

    千次阅读 2018-04-01 17:06:57
    多线程优势 提高系统的吞吐率:多线程编程使得一个进程可以有多个并发操作,例如当一个线程以为IO操作而处于等待时,其它线程仍然可以执行其操作。 提高响应性:使用多线程的情况下,对于GUI软件,如Desktop程序...

    多线程一直都被广泛的讨论和研究,可是为什么要用多线程呢?多线程又究竟会产生哪些问题呢?

    • 线程的优势
    • 线程的风险

    多线程的优势

    提高系统的吞吐率:多线程编程使得一个进程可以有多个并发操作,例如当一个线程以为IO操作而处于等待时,其它线程仍然可以执行其操作。
    提高响应性:使用多线程的情况下,对于GUI软件,如Desktop程序,一个慢的操作(比如从服务器下载一个大文件)并不会导致软件的界面出现被冻住的现象而无法响应用户的其他操作;对于WEB程序而言,一个请求慢了并不会影响其它请求的的处理。
    充分利用多核CPU的资源:现代计算机普遍拥有多个核心,大到大型机,小到手机。使用恰当的多线程编程可以充分理由多核资源。
    最小化对系统资源的使用:一个进程的多个线程可以共享其所在进程所申请的资源如内存空间,因此使用多个线程相比于多个进程进行编程来说,节约对系统资源的使用。(值得注意的是,如果线程的所需要的资源超过当前进程所拥有资源,进程还是会在申请更多的内存)
    简化程序的结构:线程可以简化复杂应用程序的结构。比如做一件很复杂的事情,但是事情实际上是可以分步进行的时候,就可以使用多线程来简化程序的结构。

    多线程的风险

    共享数据问题:多个线程共享数据问题的时候,如果没有采取相应的并发访问措施,那么就可能产生数据不一致,如脏读,丢失更新。
    上下文切换:如果线程过多,CPU资源出现紧张,上下文切换会增加系统的消耗,不利于系统的吞吐率。所以控制同时运行的线程数量很重要。一般会使用线程池技术,NIO等措施。
    可靠性:以往讲到多线程编程,我们一般都是认为是但进程多线程。,试想如果某个java进程由于内存泄露导致JVM崩溃而意外停止,那么进程中所有的线程也就随之而无法继续运行,因此,从提高软件的可靠性角度来看,某些情况下可能要考虑多进程多线程的编程方式,而非简单的单进程多线程方式。
    线程生命体征问题:即常说的死锁,活锁,饥饿等问题。

    “`

    展开全文
  • java多线程优势

    千次阅读 2018-07-11 15:00:24
    多线程优势1,线程程序中是独立的,并发的执行流,但是,与分隔的进程相比,进程中的线程之间的隔离程度要小。它们共享内存,文件句柄和其他每个进程应有的状态。2,线程比进程具有更高的性能,这是由于同一个...

    多线程的优势

    1,线程在程序中是独立的,并发的执行流,但是,与分隔的进程相比,进程中的线程之间的隔离程度要小。它们共享内存,文件句柄和其他每个进程应有的状态。

    2,线程比进程具有更高的性能,这是由于同一个进程中的线程都有共性:多个线程将共享同一个进程虚拟空间。线程共享的环境包括:进程代码段,进程的公有数据等。

    利用这些共享的数据等,线程很容易实现相互之间的通信。

    3,当操作系统创建一个进程时,必须为进程分配独立的内存空间,并分配大量相关资源:但创建一个线程则简单很多,因此使用多线程来实现并发比使用多进程实现并发

    的性能要高得多。

    4,总结起来,使用多线程编程包含如下几个优点:

    (1)进程间不能共享内存,但线程之间可以共享内存非常容易。

    (2)系统创建进程需要为该进程重新分配系统资源,但创建线程则代价小的多,因此使用多线程来实现多任务并发比多进程的效率高。

    (3)Java语言内置多线程功能支持,而不是单纯地作为底层操作系统的调度方式,从而简化了Java的多线程编程。

    转载来自:https://www.cnblogs.com/gylhaut/p/5264088.html

    展开全文
  • Java 多线程:彻底搞懂线程池

    万次阅读 多人点赞 2019-07-09 19:27:00
    熟悉Java多线程编程的同学都知道,当我们线程创建过多时,容易引发内存溢出,因此我们就有必要使用线程池的技术了。 目录 1 线程池的优势 2 线程池的使用 3 线程池的工作原理 4 线程池的参数 4.1 任务队列...
  • 多线程编程的优势与风险

    千次阅读 2018-07-09 09:57:31
    多线程编程具有以下优势。 提高系统的吞吐率。多线程编程使得一个进程中可以有多个并发(即同时进行)的操作。例如,当一个线程因为I/O操作而处于等待时,其他线程任然可以执行其操作。 提高响应性。使用多线程...
  • Java多线程学习(吐血超详细总结)

    万次阅读 多人点赞 2015-03-14 13:13:17
    本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。
  • 从测试结果看,在多线程渲染方面,即使是已经淘汰的服务器CPU,和目前主流桌面CPU相比,多线程仍占有一定优势。目前,Intel Xeon E5-2667V2 二手CPUTB售价不到1000元,显然,充分利用Xeon的多线程做3D渲染,具有极...
  • 左边的SHVideoPlayerCaption 代理了播放器的方法叫:...那么,这样的多线程情况下: 如果:执行顺序是1-> 3 -> 2 -> 4。那么第4步则会crash了。 Block则可解决这个问题,block会持有了self省的走dealloc了
  • 多进程与多线程区别

    万次阅读 多人点赞 2016-04-21 10:01:16
    Unix上编程采用多线程还是多进程的争执由来已久,这种争执最常见到C/S通讯中服务端并发技术 的选型上,比如WEB服务器技术中,Apache是采用多进程的(perfork模式,每客户连接对应一个进程,每进程中只存在唯一一...
  • 1. 进程的优势在于任务的独立...如果是个任务同一个进程内部利用线程进行处理,某个线程发生了未处理的异常的话,会导致整个进程完蛋,所有的任务跟着遭殃. 2. 从资源分配上来说,进程方案比多线程方案更加灵
  • 多线程

    千次阅读 2016-04-19 22:03:37
    多线程: 1、进程和线程: 进程:正在进行的程序。每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元。 线程:进程内部的一条执行路径或者一个控制单元。 两者的区别: 一个进程至少...
  • 多线程面试题(值得收藏)

    万次阅读 多人点赞 2019-08-16 09:41:18
    史上最强多线程面试47题(含答案),建议收藏 金九银十快到了,即将进入找工作的高峰期,最新整理的最全多线程并发面试47题和答案总结,希望对想进BAT的同学有帮助,由于篇幅较长,建议收藏后细看~ 1、并发编程三要素?...
  • python多线程

    千次阅读 2019-10-12 11:20:59
    python多线程及notify和wait的是使用python多线程多线程创建方式多线程管理 python多线程 python主要是通过thread和threading这两个模块来实现多线程支持。python的thread模块是比较底层的模块,python的threading...
  • 1.继承Thread package com.test.thread; public class TicketThread1 extends ...总结:实现Runnable接口比继承Thread的优势有: ...所以开发首选实现Runnable接口方式来实现多线程操作!
  • Java 多线程

    千次阅读 2012-05-19 21:48:12
    多线程 程序与进程 程序:一段静态的代码。 进程:程序的一次动态执行过程,它对应从代码加载、执行到执行完毕的一个完整过程。 线程是比进程更小的执行单位,它是一个进程中独立的控制流,即程序内部的控制...
  • JAVA 多线程

    千次阅读 2021-04-03 21:19:04
    多线程之前先来看看必要的一些东西: 线程与进程 进程: 是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间。 线程: 是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行....
  • 多线程】应用Java多线程实例

    千次阅读 2016-12-21 17:09:08
    这里好好总结一下,主要从多线程的实现、有返回值的多线程以及如何在多线程中注入spring的bean等方面来介绍一下。 其实对多线程并不陌生,但是成系统的搞一下多线程这个是需要研究很多东西的。一般来说,像我,就是...
  • 多线程  一个程序内部也可以实现多个任务并发执行,其中每个任务称为线程。 线程不能独立运行,必须依赖于进程,进程中运行。 线程是比进程更小 的执行单位,它是一个进程中独立的控制流,即程序内部的...
  • 线程、进程、多线程、多进程 和 多任务 小结

    千次阅读 多人点赞 2019-04-20 11:59:56
    4 多线程 5 线程与进程的关系 6 线程和进程的区别 7 进程的优缺点 7.1 进程的优点 7.2 进程的缺点 8 线程的优缺点 8.1 线程的优点 8.2 线程的缺点 9 多线程的优缺点 9.1 多线程的优点 9.2 多线程的缺点 ...
  • 同步多线程

    千次阅读 2013-11-02 08:50:57
    同步多线程(SMT)是一种一个CPU 的时钟周期内能够执行来自多个线程的...同步多线程用于商用环境中及为周期/指令(CPI)计数较高的工作负载创造性能优势。 处理器采用超标量结构,最适于以并行方式读取及运行指令。
  • 多线程技术

    千次阅读 2016-11-07 15:29:41
    多任务、多线程和多处理这些术语经常被交替地使用,但是它们本质上是不同的概念。多任务是指操作系统具有任务间快速切换使得这些任务看起来是同步执行的能力。一个抢占式多任务系统中,应用程序可以随时被...
  • Java多线程之如何创建多线程

    千次阅读 2018-05-24 13:41:34
    Java与多线程的关系我们平时写的好多简单程序就有多个线程参与,你可能会感到惊讶,但是事实就是这样。Java程序从main()方法开始执行,然后按照既定的代码逻辑执行,看似没有其他线程参与,但实际上Java程序天生就是...
  • Java多线程面试题

    万次阅读 2020-10-25 15:56:40
    sleep 方法: 是 Thread 类的静态方法,当前线程将睡眠 n 毫秒,线程进入阻塞状态。当睡眠时间到了,会解除阻塞,进行可运行状态,等待 CPU 的到来。睡眠不释放锁(如果有的话); wait 方法: 是 Object 的方法...
  • 理解多线程的实际意义和优势

    千次阅读 2018-07-03 21:40:16
    首先理解并行和并发的区别:并行:指同一时刻,有条指令在多个处理器上同时执行;并发:指同一时刻,只能有一条指令执行,但个进程指令被快速轮换执行,使得宏观上具有个进程同时执行的效果。大部分操作...
  • 教妹学 Java:难以驾驭的多线程

    千次阅读 多人点赞 2019-06-06 07:28:32
    多线程
  • Python 多线程

    千次阅读 2016-08-31 13:17:54
    Python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理。 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件...
  • Java 多线程面试题

    千次阅读 2019-03-27 20:06:51
    看完《Java多线程编程核心技术》与《Java并发编程的艺术》之后,对于多线程的理解到了新的境界. 先拿如下的题目试试手把. 投行面试 Q1: 现在有线程 T1、T2 和 T3。你如何确保 T2 线程 T1 之后执行,并且 T3 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 220,499
精华内容 88,199
关键字:

多线程优势在哪