多线程是什么意思?。吭诵卸喔龀绦虻囊馑悸穑?/h3>【什么是多线程】举个例子,下载东西时开了多线程,就是把这一个东西分了多个块,几个块同时下载.
多线程工作是什么意思?什么是线程?
英文:Thread
每个正在系统上运行的程序都是一个进程 。每个进程包含一到多个线程 。进程也可能是整个程序或者是部分程序的动态执行 。线程是一组指令的集合 , 或者是程序的特殊段,它可以在程序里独立执行 。也可以把它理解为代码运行的上下文 。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务 。通常由操作系统负责多个线程的调度和执行 。
什么是多线程?
多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率 。线程是在同一时间需要完成多项任务的时候被实现的 。
使用线程的好处有以下几点:
·使用线程可以把占据长时间的程序中的任务放到后台去处理
·用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度
·程序的运行速度可能加快
·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了 。在这种情况下我们可以释放一些珍贵的资源如内存占用等等 。
还有其他很多使用多线程的好处,这里就不一一说明了 。
一些线程模型的背景
我们可以重点讨论一下在Win32环境中常用的一些模型 。
·单线程模型
在这种线程模型中,一个进程中只能有一个线程 , 剩下的进程必须等待当前的线程执行完 。这种模型的缺点在于系统完成一个很小的任务都必须占用很长的时间 。
CPU的多线程是什么意思?CPU的超线程是什么意思?别着急,听专业人士慢慢给你讲解
多线程是什么意思?1 。单进程单线程:一个人在一个桌子上吃菜 。
2 。单进程多线程:多个人在同一个桌子上一起吃菜 。
3 。多进程单线程:多个人每个人在自己的桌子上吃菜 。
多线程的问题是多个人同时吃一道菜的时候容易发生争抢,例如两个人同时夹一个菜,一个人刚伸出筷子,结果伸到的时候已经被夹走菜了 。。。此时就必须等一个人夹一口之后 , 在还给另外一个人夹菜,也就是说资源共享就会发生冲突争抢 。
1 。对于 Windows 系统来说,【开桌子】的开销很大,因此 Windows 鼓励大家在一个桌子上吃菜 。因此 Windows 多线程学习重点是要大量面对资源争抢与同步方面的问题 。
2 。对于 Linux 系统来说,【开桌子】的开销很?。虼?Linux 鼓励大家尽量每个人都开自己的桌子吃菜 。这带来新的问题是:坐在两张不同的桌子上,说话不方便 。因此 , Linux 下的学习重点大家要学习进程间通讯的方法 。
在java中单线程和多线程是什么意思,他们有什么区别,分别的作用是什么?去一个地方 , 只允许做火车;
去另外一个地方 , 可以采取任何方法,爬行都行~
什么是线程,什么又是多线程 它们之间有什线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行!
线程和多线程的区别是什么?谢谢跟你打个比方,搬砖头 , 有500块砖需要搬
1个人搬1块砖需要1秒钟
单线程:10个人搬 , 但是排着队般,需要500秒才能搬完
多线程:也是10个人搬,但是一起搬,只需50秒就可以完成
多线程的优点就是节约时间,但比较占内存.
具体的实现就看你自己用什么语言了.希望对你有帮助.
什么是线程,线程和进程有什么区别?进程和线程都是由操作系统所体现的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性 。
进程和线程的区别在于:
简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高 。
另外 , 进程在执行过程中拥有独立的内存单元,而多个线程共享内存 , 从而极大地提高了程序的运行效率 。
线程在执行过程中与进程还是有区别的 。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出 口 。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制 。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行 。但操作系统并没有将多个线程看做多个独立的应用 , 来实现进程的调度和管理以及资源分配 。这就是进程和线程的重要区别 。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
我上学期的课程复习时候总结的
java中单线程和多线程是什么意思?他们有什么区别?各自的作用是什么?在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理” 。多线程处理一个常见的例子就是用户界面 。利用线程,用户可按下一个按钮,然后程序会立即作出响应 , 而不是让用户等待程序完成了当前任务以后才开始响应 。简单地说,就是说可以有多个任务同时进行 。
单线程在程序执行时 , 所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行 。因此,针对前面举的例子 , 必须等待程序完成了当前任务以后才能开始相应 。
使用多线程访问公共的资源时,容易引发线程安全性问题,因此针对这种需要使用线程同步机制来保护公共的资源 。
单线程较多线程来说,就不会出现上诉问题,系统稳定、扩展性极强、软件丰富 。多用于点对点的服务 。
什么是多线程,多进程?

文章插图
1、多线程:是指从软件或者硬件上实现多个线程并发执行的技术 。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能 。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器 。在一个程序中,这些独立运行的程序片段叫作“线程”,利用它编程的概念就叫作“多线程处理” 。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能 。2、多进程:Windows 应用程序中消息有两种送出途径;直接和排队 。Windows或某些运行的应用程序可直接发布消息给窗口过程,或者,消息可送到消息列象连续不断轮询消息队列的OS中当前执行的每个进程都 事件驱动程序不是由事件的顺序来控制 , 而是由事件的发生来控,而事件的发生是随机的、不确定的,这就允许程序的用户用各种合理的顺序来安排程序的流程 。扩展资料:多线程优点:1、使用线程可以把占据时间长的程序中的任务放到后台去处理2、用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度3、程序的运行速度可能加快4、在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了 。在这种情况下可以释放一些珍贵的资源如内存占用等等 。5、多线程技术在IOS软件开发中也有举足轻重的位置 。参考资料来源:百度百科-多线程百度百科-多进程
多线程的主要用处是什么?进程中的所有线程共享进程的虚拟地址空间,进程中的线程是并行执行的,系统为每个线程划分执行时间,
线程是什么意思先看看专业的解释是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源 , 只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源 。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行 。由于线程之间的相互制约,致使线程在运行中呈现出间断性 。线程也有就绪、阻塞和运行三种基本状态 。
线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.
线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU
.....我用例子给你说下比如你们学校大扫除,分工到每一个班级你们班级就叫做进程,负责的任务是大扫除,就是主线程然后你们班有3个小组,第一组扫地,第二组拖地,第三组擦窗户那么这三组分别做了三种不同的事情,可以看作三个线程也就是说线程隶属于进程是一个包含被包含的关系每个线程的作用不一样就上上面我说的三个线程,一个作用是扫地 , 一个是拖地 , 一个擦窗户理解起来也不是很难
CPU多线程的作用是什么?CPU是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit) 。
多线程是什么意思?我们现在所使用操作系统都是多任务操作系统(早期使用的DOS操作系统为单任务操作系统),多任务操作指在同一时刻可以同时做多件事(可以同时执行多个程序) 。多进程:每个程序都是一个进程,在操作系统中可以同时执行多个程序,多进程的目的是为了有效的使用CPU资源,每开一个进程系统要为该进程分配相关的系统资源(内存资源)多线程:线程是进程内部比进程更小的执行单元(执行流|程序片段),每个线程完成一个任务,每个进程内部包含了多个线程每个线程做自己的事情 , 在进程中的所有线程共享该进程的资源;主线程:在进程中至少存在一个主线程,其他子线程都由主线程开启,主线程不一定在其他线程结束后结束 , 有可能在其他线程结束前结束 。Java中的主线程是main线程,是Java的main函数;
多线程的定义是什么?线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行 。也可以把它理解为代码运行的上下文 。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务 。通常由操作系统负责多个线程的调度和执行 。
多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立 。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度 。
多线程是多任务的特殊形式 。通常,有两种类型的多任务:基于进程和基于线程的多任务 。进程本质上是正在执行的程序 。因此,基于进程的多任务就是允许您的计算机同时运行两个或者更多程序的特性 。例如,基于进程的多任务允许您在使用电子制表软件或者浏览Internet的同时运行文字处理程序 。在基于进程的多任务中 , 程序是调度程序可以分派的最小代码单元 。
多线程是为了使得多个线程并行的工作以完成多项任务 , 以提高系统的效率 。线程是在同一时间需要完成多项任务的时候被实现的 。
使用线程的好处有以下几点:
·使用线程可以把占据长时间的程序中的任务放到后台去处理
·用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度
·程序的运行速度可能加快
·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较游泳了 。在这种情况下我们可以释放一些珍贵的资源如内存占用等等 。
还有其他很多使用多线程的好处,这里就不一一说明了 。
多线程应用
我们以客户/服务器应用模式中如何进行服务器程序设计为例,来说明多线程技术的应用 。该程序是在DECnet-VAX网络邮箱上实现的 。对于TCP/IP,除了改用捆绑的套接字(socket)来代替DECnet中的网络邮箱以监视客户的服务请求外,其他方面基本上是一样的 。
为了简化说明 , 假定该服务程序只提供2类功能 , 分别由函数funcl( )和func2( )来实现 。客户在请求服务时要指明功能号1或2 。另外限制需要同时提供服务的客户数目 。
多线程程序的基本设计思想是,为请求服务的每个客户建立1个线程,专门为该客户提供服务 。限制客户数目就是限制同时存在的线程数目 。这些动态建立的线程对象存放在数组中 。通过查找该数组是否有空槽,来决定是否达到最大数目 。同时利用该数组来管理这些动态存在的线程及相应的网络链路 。整个程序由1个主程序和提供2类服务的2个子程序组成 。主程序(主控线程)在完成初始化操作后,开始循环读取邮箱中的网络控制信息;在接收到连接请求信息后,主控线程就建立1个新线程,并指定相应的函数作为执行代码;如果客户要断开连接,则主控线程查找到相应的服务线程号,释放该服务线程使用的网络链路,并删除此线程 。
什么是线程、什么又是多线程 它们之间有什么区别呢?说法一:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行
说法二:进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性 。进程和线程的区别在于:
简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高 。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率 。
线程在执行过程中与进程还是有区别的 。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口 。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制 。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行 。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配 。这就是进程和线程的重要区别 。
说法三:多线程共存于应用程序中是现代操作系统中的基本特征和重要标志 。用过UNIX操作系统的读者知道进程,在UNIX操作系统中,每个应用程序的执行都在操作系统内核中登记一个进程标志,操作系统根据分配的标志对应用程序的执行进行调度和系统资源分配 , 但进程和线程有什么区别呢?
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性 。进程和线程的区别在于:
线程的划分尺度小于进程,使得多线程程序的并发性搞 。
另外 , 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率 。
线程在执行过程中与进程还是有区别的 。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口 。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制 。
从逻辑角度来看 , 多线程的意义在于一个应用程序中,有多个执行部分可以同时执行 。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配 。这就是进程和线程的重要区别 。
进程(Process)是最初定义在Unix等多用户、多任务操作系统环境下用于表示应用程序在内存环境中基本执行单元的概念 。以Unix操作系统为例,进程是Unix操作系统环境中的基本成分、是系统资源分配的基本单位 。Unix操作系统中完成的几乎所有用户管理和资源分配等工作都是通过操作系统对应用程序进程的控制来实现的 。
C、C++、Java等语言编写的源程序经相应的编译器编译成可执行文件后 , 提交给计算机处理器运行 。这时,处在可执行状态中的应用程序称为进程 。从用户角度来看,进程是应用程序的一个执行过程 。从操作系统核心角度来看 , 进程代表的是操作系统分配的内存、CPU时间片等资源的基本单位,是为正在运行的程序提供的运行环境 。进程与应用程序的区别在于应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中,而进程则是处于动态条件下由操作系统维护的系统资源管理实体 。多任务环境下应用程序进程的主要特点包括:
●进程在执行过程中有内存单元的初始入口点,并且进程存活过程中始终拥有独立的内存地址空间;
●进程的生存期状态包括创建、就绪、运行、阻塞和死亡等类型;
●从应用程序进程在执行过程中向CPU发出的运行指令形式不同,可以将进程的状态分为用户态和核心态 。处于用户态下的进程执行的是应用程序指令、处于核心态下的应用程序进程执行的是操作系统指令 。
在Unix操作系统启动过程中,系统自动创建swapper、init等系统进程,用于管理内存资源以及对用户进程进行调度等 。在Unix环境下无论是由操作系统创建的进程还要由应用程序执行创建的进程,均拥有唯一的进程标识(PID) 。
说法四:应用程序在执行过程中存在一个内存空间的初始入口点地址、一个程序执行过程中的代码执行序列以及用于标识进程结束的内存出口点地址,在进程执行过程中的每一时间点均有唯一的处理器指令与内存单元地址相对应 。
Java语言中定义的线程(Thread)同样包括一个内存入口点地址、一个出口点地址以及能够顺序执行的代码序列 。但是进程与线程的重要区别在于线程不能够单独执行,它必须运行在处于活动状态的应用程序进程中,因此可以定义线程是程序内部的具有并发性的顺序代码流 。
Unix操作系统和Microsoft Windows操作系统支持多用户、多进程的并发执行,而Java语言支持应用程序进程内部的多个执行线程的并发执行 。多线程的意义在于一个应用程序的多个逻辑单元可以并发地执行 。但是多线程并不意味着多个用户进程在执行 , 操作系统也不把每个线程作为独立的进程来分配独立的系统资源 。进程可以创建其子进程,子进程与父进程拥有不同的可执行代码和数据内存空间 。而在用于代表应用程序的进程中多个线程共享数据内存空间,但保持每个线程拥有独立的执行堆栈和程序执行上下文(Context) 。
基于上述区别,线程也可以称为轻型进程 (Light Weight Process,LWP) 。不同线程间允许任务协作和数据交换,使得在计算机系统资源消耗等方面非常廉价 。
线程需要操作系统的支持,不是所有类型的计算机都支持多线程应用程序 。Java程序设计语言将线程支持与语言运行环境结合在一起,提供了多任务并发执行的能力 。这就好比一个人在处理家务的过程中,将衣服放到洗衣机中自动洗涤后将大米放在电饭锅里 , 然后开始做菜 。等菜做好了,饭熟了同时衣服也洗好了 。
需要注意的是:在应用程序中使用多线程不会增加 CPU 的数据处理能力 。只有在多CPU 的计算机或者在网络计算体系结构下,将Java程序划分为多个并发执行线程后,同时启动多个线程运行 , 使不同的线程运行在基于不同处理器的Java虚拟机中,才能提高应用程序的执行效率 。
java 多线程是什么?线程定义比较抽象,简单的说就是一个代码执行流 。许多执行流可以混合在一起由CPU调度 。线程是允许各种任务交互执行的方式 。
Java的线程在操作系统的实现模式依系统不同而不同,可能是系统级别的进程或线程,但对于程序员来说并没有影响 。
任务交互的一个好处是增加程序响应 。如一个界面程序执行一段耗时的数据库查询,使用单独的线程可以让界面依然响应用户的其他输入,而单线程只能等待查询结束再处理 。
JVM以及操作系统会优先处理优先级别高的线程,但不代表这些线程一定会先完成 。设定优先级只能建议系统更快的处理,而不能强制 。
你补充的情况完全正确 。另外,在运行时,并没有按照函数分界,而是按照机器码/汇编码分界 。也就是说不保证任何一段代码是被完整而不打断的执行的(除非你已经使用同步手段) 。正由于如此,各种线程同步的方法应运而生 。
什么是线程??线程是进程的一个实体,是CPU调度和分派的基本单位 , 它是比进程更小的能独立运行的基本单位 。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源 。就是你看见任务管理器的有一个浏览器正在运行,但是他的进程一般是一个网页一个进程你可以右键切换到进程查看 。线程,有时被称为轻量级进程(Lightweight Process,LWP) , 是程序执行流的最小单元 。一个标准的线程由线程ID,当前指令指针(PC) , 寄存器集合和堆栈组成 。另外,线程是进程中的一个实体 , 是被系统独立调度和分派的基本单位,线程自己不拥有系统资源 , 只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源 。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行 。由于线程之间的相互制约,致使线程在运行中呈现出间断性 。线程也有就绪、阻塞和运行三种基本状态 。就绪状态是指线程具备运行的所有条件 , 逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行 。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身 。线程是程序中一个单一的顺序控制流程 。进程内有一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指令运行时的程序的调度单位 。在单个程序中同时运行多个线程完成不同的工作,称为多线程 。
java线程是什么一、操作系统中线程和进程的概念现在的操作系统是多任务操作系统 。多线程是实现多任务的一种方式 。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程 。比如在Windows系统中 , 一个运行的exe就是一个进程 。线程是指进程中的一个执行流程,一个进程中可以运行多个线程 。比如java.exe进程中可以运行很多线程 。线程总是属于某个进程 , 进程中的多个线程共享进程的内存 。“同时”执行是人的感觉,在线程之间实际上轮换执行 。二、Java中的线程在Java中,“线程”指两件不同的事情:1、java.lang.Thread类的一个实例;2、线程的执行 。使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义、实例化和启动新线程 。一个Thread类实例只是一个对象,像Java中的任何其他对象一样,具有变量和方法 , 生死于堆上 。Java中,每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行着 。一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内 , 它被称为主线程 。一旦创建一个新的线程,就产生一个新的调用栈 。线程总体分两类:用户线程和守候线程 。当所有用户线程执行完毕的时候,JVM自动关闭 。但是守候线程却不独立于JVM , 守候线程一般是由操作系统或者用户自己创建的
什么是Java多线程编程?一、 什么是多线程:我们现在所使用操作系统都是多任务操作系统(早期使用的DOS操作系统为单任务操作系统),多任务操作指在同一时刻可以同时做多件事(可以同时执行多个程序) 。多进程:每个程序都是一个进程,在操作系统中可以同时执行多个程序,多进程的目的是为了有效的使用CPU资源 , 每开一个进程系统要为该进程分配相关的系统资源(内存资源)多线程:线程是进程内部比进程更小的执行单元(执行流|程序片段),每个线程完成一个任务,每个进程内部包含了多个线程每个线程做自己的事情,在进程中的所有线程共享该进程的资源;主线程:在进程中至少存在一个主线程,其他子线程都由主线程开启,主线程不一定在其他线程结束后结束,有可能在其他线程结束前结束 。Java中的主线程是main线程,是Java的main函数;二、 Java中实现多线程的方式:继承Thread类来实现多线程:当我们自定义的类继承Thread类后,该类就为一个线程类,该类为一个独立的执行单元,线程代码必须编写在run()方法中,run方法是由Thread类定义,我们自己写的线程类必须重写run方法 。run方法中定义的代码为线程代码,但run方法不能直接调用,如果直接调用并没有开启新的线程而是将run方法交给调用的线程执行要开启新的线程需要调用Thread类的start()方法,该方法自动开启一个新的线程并自动执行run方法中的内容请点击输入图片描述结果:请点击输入图片描述java多线程的启动顺序不一定是线程执行的顺序,各个线程之间是抢占CPU资源执行的,所有有可能出现与启动顺序不一致的情况 。CPU的调用策略:如何使用CPU资源是由操作系统来决定的,但操作系统只能决定CPU的使用策略不能控制实际获得CPU执行权的程序 。线程执行有两种方式:1.抢占式:目前PC机中使用最多的一种方式,线程抢占CPU的执行权,当一个线程抢到CPU的资源后并不是一直执行到此线程执行结束 , 而是执行一个时间片后让出CPU资源,此时同其他线程再次抢占CPU资源获得执行权 。2.轮循式;每个线程执行固定的时间片后让出CPU资源,以此循环执行每个线程执行相同的时间片后让出CPU资源交给下一个线程执行 。希望对您有所帮助!~
java中什么叫做线程?什么叫多线程?多线程的特点是什么?先理解这几概念:a1.程序:指令和数据的byte序列,eg:qq.exe;a2.进程:正在运行的程序(如QQ);a3.一个进程中可能有一到多个线程.
线程的概念:Thread每个正在系统上运行的程序都是一个进程 。每个进程包含一到多个线程 。进程也可能是整个程序或者是部分程序的动态执行 。
线程是一组指令的集合 , 或者是程序的特殊段,它可以在程序里独立执行 。也可以把它理解为代码运行的上下文 。
所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务 。通常由操作系统负责多个线程的调度和执行 。
多线程的概念:多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率 。
线程是在同一时间需要完成多项任务的时候实现的 。
多线程的优点:使用线程可以把占据长时间的程序中的任务放到后台去处理
用户界面可以更加吸引人 , 这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度·
程序的运行速度可能加快·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了 。
在这种情况下我们可以释放一些珍贵的资源如内存占用等等 。
什么是java多线程详解线程对象是可以产生线程的对象 。比如在Java平台中Thread对象,Runnable对象 。线程,是指正在执行的一个指点令序列 。在java平台上是指从一个线程对象的start()开始 , 运行run方法体中的那一段相对独立的过程 。相比于多进程,多线程的优势有:
(1)进程之间不能共享数据,线程可以;
(2)系统创建进程需要为该进程重新分配系统资源 , 故创建线程代价比较?。?br>(3)Java语言内置了多线程功能支持,简化了java多线程编程 。
一、创建线程和启动
(1)继承Thread类创建线程类
通过继承Thread类创建线程类的具体步骤和具体代码如下:
• 定义一个继承Thread类的子类,并重写该类的run()方法;
• 创建Thread子类的实例,即创建了线程对象;
• 调用该线程对象的start()方法启动线程 。
复制代码
class SomeThead extends Thraad{
public void run(){
//do something here
}
}
public static void main(String[] args){
SomeThread oneThread = new SomeThread();
步骤3:启动线程:
oneThread.start();
}
复制代码
(2)实现Runnable接口创建线程类
通过实现Runnable接口创建线程类的具体步骤和具体代码如下:
• 定义Runnable接口的实现类,并重写该接口的run()方法;
• 创建Runnable实现类的实例 , 并以此实例作为Thread的target对象 , 即该Thread对象才是真正的线程对象 。
复制代码
class SomeRunnable implements Runnable{
public void run(){
//do something here
}
}
Runnable oneRunnable = new SomeRunnable();
Thread oneThread = new Thread(oneRunnable);
oneThread.start();
复制代码
(3)通过Callable和Future创建线程
通过Callable和Future创建线程的具体步骤和具体代码如下:
• 创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且有返回值 。
• 创建Callable实现类的实例,使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值 。
• 使用FutureTask对象作为Thread对象的target创建并启动新线程 。
• 调用FutureTask对象的get()方法来获得子线程执行结束后的返回值其中 , Callable接口(也只有一个方法)定义如下:
复制代码
public interface Callable{
V call() throws Exception;
}
步骤1:创建实现Callable接口的类SomeCallable(略);
步骤2:创建一个类对象:
Callable oneCallable = new SomeCallable();
步骤3:由Callable创建一个FutureTask对象:
FutureTask oneTask = new FutureTask(oneCallable);
注释: FutureTask是一个包装器,它通过接受Callable来创建,它同时实现了 Future和Runnable接口 。
步骤4:由FutureTask创建一个Thread对象:
Thread oneThread = new Thread(oneTask);
步骤5:启动线程:
oneThread.start();
多线程是什么,有什么好处呢举个例子,你要做饭,你要做的饭是米饭和一个炒菜 。如果是单线程,那么你可以如下做:第一种方法:先炒菜,然后开始蒸米饭;第二种方法:先蒸米饭,等米饭熟了再炒菜;如果是多线程,那么你就可以如下做:先蒸米饭,在蒸米饭的过程中去炒菜 。有些问题的解决用多线程会提高效率,比如上边的例子 。但是有时不会提高效率,反而会影响效率:比如,你要洗衣服,还打算做家庭作业(假设你是小学生,老师给你布置的家庭作业) 。如果是单线程:你要么洗完衣服做作业,要么做完作业洗衣服 。如果是多线程:你洗一分钟衣服做一分钟作业,交叉进行,显然有些时间都耗在了任务的切换上了 。所以 , 多线程主要用于,当一个任务需要不占用资源的等待的时候,可以使用空闲的资源做其他的事情 。比如类似于QQ聊天的程序,程序的一个线程一直在等待着看是否有好友发消息过来,而与此同时另一个线程允许你打字并且将自己的消息发送给对方 。以上例子并不是很完美,只是希望能借这些例子对多线程有所理解 。
什么是多线程和高并发“高并发和多线程”总是被一起提起,给人感觉两者好像相等,实则 高并发 ≠ 多线程
多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过多线程有助于系统承受高并发状态的实现 。
高并发是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问或者socket端口集中性收到大量请求(例如:12306的抢票情况;天猫双十一活动) 。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等 。如果高并发处理不好,不仅仅降低了用户的体验度(请求响应时间过长),同时可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等 。如果要想系统能够适应高并发状态,则需要从各个方面进行系统优化 , 包括 , 硬件、网络、系统架构、开发语言的选取、数据结构的运用、算法优化、数据库优化……而多线程只是其中解决方法之一 。
什么是多线程,多线程编程的好处是什么举个例子 , 你要做饭,你要做的饭是米饭和一个炒菜 。
如果是单线程,那么你可以如下做:
第一种方法:先炒菜 , 然后开始蒸米饭;
第二种方法:先蒸米饭,等米饭熟了再炒菜;
如果是多线程,那么你就可以如下做:
先蒸米饭,在蒸米饭的过程中去炒菜 。
有些问题的解决用多线程会提高效率,比如上边的例子 。但是有时不会提高效率,反而会影响效率:
比如,你要洗衣服,还打算做家庭作业(假设你是小学生,老师给你布置的家庭作业) 。
如果是单线程:你要么洗完衣服做作业,要么做完作业洗衣服 。
如果是多线程:你洗一分钟衣服做一分钟作业,交叉进行,显然有些时间都耗在了任务的切换上了 。
所以 , 多线程主要用于,当一个任务需要不占用资源的等待的时候,可以使用空闲的资源
什么是多线程编程?什么时候使用多线程的使用主要是用来处理程序“在一部分上会阻塞” , “在另一部分上需要持续运行”的场合 。一般是根据需求,可以用多线程,事件触发,callback等方法达到 。但是有一些方法是只有多线程能办到的就只有用多线程或者多进程来完成 。
举个简单的例子,能理解就行 。假设有这样一个程序,
1会不停的处理收到的所有TCP请求 。对于每个TCP请求做不同的操作 。不能有遗漏
2有很多特定的请求会向一个服务器发送存储的数据,或者是等待用户输入 。
来看看 。第1个要求很简单 。用个while循环就搞定了 。但第2个特性呢 。一旦在等待用户输入或者是连接服务器时,程序会“阻塞”一段时间,这一段时间内就无法处理其他的TCP请求了 。
所以可以利用多线程,每个线程处理不同的TCP请求 。这样程序就不会“阻塞”掉了 。
多线程编程怎么回事?。浚?/h3> 每个正在系统上运行的程序都是一个进程 。每个进程包含一到多个线程 。进程也可能是整个程序或者是部分程序的动态执行 。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行 。也可以把它理解为代码运行的上下文 。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务 。通常由操作系统负责多个线程的调度和执行 。
什么是多线程?
多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率 。线程是在同一时间需要完成多项任务的时候被实现的 。
使用线程的好处有以下几点:
·使用线程可以把占据长时间的程序中的任务放到后台去处理
·用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度
·程序的运行速度可能加快
·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了 。在这种情况下我们可以释放一些珍贵的资源如内存占用等等 。
还有其他很多使用多线程的好处,这里就不一一说明了 。
一些线程模型的背景
我们可以重点讨论一下在Win32环境中常用的一些模型 。
·单线程模型
在这种线程模型中,一个进程中只能有一个线程,剩下的进程必须等待当前的线程执行完 。这种模型的缺点在于系统完成一个很小的任务都必须占用很长的时间 。
·块线程模型(单线程多块模型STA)
这种模型里,一个程序里可能会包含多个执行的线程 。在这里,每个线程被分为进程里一个单独的块 。每个进程可以含有多个块 , 可以共享多个块中的数据 。程序规定了每个块中线程的执行时间 。所有的请求通过Windows消息队列进行串行化,这样保证了每个时刻只能访问一个块,因而只有一个单独的进程可以在某一个时刻得到执行 。这种模型比单线程模型的好处在于,可以响应同一时刻的多个用户请求的任务而不只是单个用户请求 。但它的性能还不是很好,因为它使用了串行化的线程模型,任务是一个接一个得到执行的 。
·多线程块模型(自由线程块模型)
多线程块模型(MTA)在每个进程里只有一个块而不是多个块 。这单个块控制着多个线程而不是单个线程 。这里不需要消息队列,因为所有的线程都是相同的块的一个部分,并且可以共享 。这样的程序比单线程模型和STA的执行速度都要块,因为降低了系统的负载,因而可以优化来减少系统idle的时间 。这些应用程序一般比较复杂,因为程序员必须提供线程同步以保证线程不会并发的请求相同的资源,因而导致竞争情况的发生 。这里有必要提供一个锁机制 。但是这样也许会导致系统死锁的发生 。
多线程编程的好处及在什么情况下用多线程CPU是以时间片的方式为进程分配CUP处理时间的,当一个进程以同步的方式去完成几件事情时,此进程必须完成了第一件事情以后再做第二件事,如此按顺序地向CPU请求完成要做的事情 。在此单线程的工作模式下,如果把CUP看作是一共有100个时间片的话,CPU可能一直都只是花了其中的10个时间片来处理当前进程所要做的事情,只是用到了CPU的10%的时间片,而其他时间都白白浪费了,当然,实际上CPU的工作模式还是做完一件事以后再去做另一件事,只是CUP的处理速度非常快 , 很快就处理完成所请求的情事 。
为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而互不干扰 , 如当前进程要完成三件事情1、2、3 , 那么CPU会分别用10%的时间来同时处理这3件事情,从而让CPU的使用率达到了30% , 大大地提高了CPU的利用率 。多线程的好处在处理一些特殊的场合其优势尤其明显 。比如下载文件,你要一边下载一边显示进度一边保存,在这种情况下,如果没有用多线程的话,没有意外的话一般都会把主线程阻塞 , 比如进度条的进度根本没有随着已下载的量而变化,堪至是整个窗体都动不了,用多线程就可以很好地解决这个问题 。
这里有一个生活实例可能更好地去理解多线程:回去看你女朋友做饭,正常的话她都会把洗好的菜(肉)先放到锅里煮,然后一边洗别的菜或处理别的事情,如:洗碗、收拾桌台准备开饭,人还是一个人,但她同时做几件事情,这样就可以大大地提高效率 。总的一句话就是:CPU还是要花同样多的时间去完成所有的事情,但多线程可以让CPU掺插地同时做多件事情 , 在视觉上让用户觉得计算机在同时帮他处理多件事情,更好地改善用户体验 。
了解了多线程的好处以后,就要了解应该在什么样的情况下使用多线程技术 。因为并不是说所有情况下用多线程都是好事,因为多线程的情况下 , CPU还要花时间去维护,CPU处理各线程的请求时在线程间的切换也要花时间,所以一般情况下是可以不用多线程的,用了有时反而会得不偿失 。大多情况下,要用到多线程的主要是需要处理大量的IO操作时或处理的情况需要花大量的时间等等 , 比如:读写文件、视频图像的采集、处理、显示、保存等 。
java中什么叫做线程?什么叫多线程?多线程的特点是什么?线程的概念:Thread每个正在系统上运行的程序都是一个进程 。每个进程包含一到多个线程 。进程也可能是整个程序或者是部分程序的动态执行 。多线程的概念:多线程是为了同步完成多项任务,不是为了提高运行效率 , 而是为了提高资源使用效率来提高系统的效率 。多线程的特点:使用线程可以把占据长时间的程序中的任务放到后台去处理用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。程序的运行速度可能加快·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了 。在这种情况下我们可以释放一些珍贵的资源如内存占用等等 。线程定义比较抽象,简单的说就是一个代码执行流 。许多执行流可以混合在一起由CPU调度 。线程是允许各种任务交互执行的方式 。Java的线程在操作系统的实现模式依系统不同而不同,可能是系统级别的进程或线程,但对于程序员来说并没有影响 。任务交互的一个好处是增加程序响应 。如一个界面程序执行一段耗时的数据库查询,使用单独的线程可以让界面依然响应用户的其他输入,而单线程只能等待查询结束再处理 。JVM以及操作系统会优先处理优先级别高的线程,但不代表这些线程一定会先完成 。设定优先级只能建议系统更快的处理,而不能强制 。另外,在运行时 , 并没有按照函数分界,而是按照机器码/汇编码分界 。也就是说不保证任何一段代码是被完整而不打断的执行的(除非你已经使用同步手段) 。正由于如此,各种线程同步的方法应运而生 。
Java多线程是什么意思?Java多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程 。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的 。1、继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且 , 启动线程的唯一方法就是通过Thread类的start()实例方法 。start()方法是一个native方法,它将启动一个新线程,并执行run()方法 。这种方式实现多线程很简单 , 通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法 。例如:在合适的地方启动线程如下:2、实现Runnable接口方式实现多线程如果自己的类已经extends另一个类,就无法直接extends Thread,此时,必须实现一个Runnable接口,如下:为了启动MyThread,需要首先实例化一个Thread,并传入自己的MyThread实例:事实上,当传入一个Runnable target参数给Thread后,Thread的run()方法就会调用target.run(),参考JDK源代码:3、使用ExecutorService、Callable、Future实现有返回结果的多线程ExecutorService、Callable、Future这个对象实际上都是属于Executor框架中的功能类 。想要详细了解Executor框架的可以访问http://www.javaeye.com/topic/366591,这里面对该框架做了很详细的解释 。返回结果的线程是在JDK1.5中引入的新特征,确实很实用,有了这种特征我就不需要再为了得到返回值而大费周折了,而且即便实现了也可能漏洞百出 。可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口 。执行Callable任务后,可以获取一个Future的对象 , 在该对象上调用get就可以获取到Callable任务返回的Object了,再结合线程池接口ExecutorService就可以实现传说中有返回结果的多线程了 。下面提供了一个完整的有返回结果的多线程测试例子,在JDK1.5下验证过没问题可以直接使用 。代码如下:代码说明:上述代码中Executors类,提供了一系列工厂方法用于创先线程池 , 返回的线程池都实现了ExecutorService接口 。public static ExecutorService newFixedThreadPool(int nThreads) 创建固定数目线程的线程池 。public static ExecutorService newCachedThreadPool() 创建一个可缓存的线程池,调用execute 将重用以前构造的线程(如果线程可用) 。如果现有线程没有可用的,则创建一个新线程并添加到池中 。终止并从缓存中移除那些已有 60 秒钟未被使用的线程 。public static ExecutorService newSingleThreadExecutor() 创建一个单线程化的Executor 。public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) 创建一个支持定时及周期性的任务执行的线程池,多数情况下可用来替代Timer类 。总结:ExecutoreService提供了submit()方法,传递一个Callable,或Runnable,返回Future 。如果Executor后台线程池还没有完成Callable的计算,这调用返回Future对象的get()方法 , 会阻塞直到计算完成 。
在java中,多线程真的是多个线程同时运行吗??多CPU当然是真多线程 。就是CPU可能同时在执行4个线程 。
但是不是多核也没关系 。因为线程的执行往往会挂起 , 等待IO之类 。这时候CPU会转到别的线程来执行 。这是分时系统的一大特征 。当然人是感觉不到的 。
用多线程,比如你的处理分为两大部分,一部分产生数据 , 一部分显示数据,产生数据比较耗时 。(生产者消费者模型) 。这个时候用多线程,一个来产生数据 , 一个来显示数据 。对于界面来说就不会在处理产生数据的时候产生假死的现象 。
希望能帮到你 。
java中多线程地并发运行是什么意思?有什么作用.好处?多线程的并发运行就相当一边干这一边干那,可以同时处理2个行为逻辑 。
多线程cpu有什么好处多线程是为了使得多个线程并行的工作以完成多项任务 , 以提高系统的效率 。线程是在同一时间需要完成多项任务的时候被实现的 。好处:·使用线程可以把占据长时间的程序中的任务放到后台去处理程序的运行速度可能加快在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了,在这种情况下我们可以释放一些珍贵的资源如内存占用等等 。最关键的一点,多线程可以让同一个程序的不同部分并发执行CPU多线程同简称SMT 。SMT可通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源,可最大限度地实现宽发射、乱序的超标量处理,提高处理器运算部件的利用率 , 缓和由于数据相关或Cache未命中带来的访问内存延时 。当没有多个线程可用时,SMT处理器几乎和传统的宽发射超标量处理器一样 。
多线程的程序有什么好处?多线程(英语:multithreading) , 是指从软件或者硬件上实现多个线程并发执行的技术 。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能 。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器 。[1]在一个程序中,这些独立运行的程序片段叫作“线程”(Thread) , 利用它编程的概念就叫作“多线程处理(Multithreading)” 。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程(台湾译作“执行绪”),进而提升整体处理性能 。
优点:
1·使用线程可以把占据时间长的程序中的任务放到后台去处理
2·用户界面可以更加吸引人 , 这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度
3·程序的运行速度可能加快
4·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了 。在这种情况下可以释放一些珍贵的资源如内存占用等等 。
5.多线程技术在IOS软件开发中也有举足轻重的位置 。
缺点:
1如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换 。
2·更多的线程需要更多的内存空间 。
3·线程可能会给程序带来更多“bug”,因此要小心使用 。
4·线程的中止需要考虑其对程序运行的影响 。
多线程的程序有什么好处多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术 。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程 , 进而提升整体处理性能 。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器 。[1]在一个程序中,这些独立运行的程序片段叫作“线程”(Thread) , 利用它编程的概念就叫作“多线程处理(Multithreading)” 。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程(台湾译作“执行绪”),进而提升整体处理性能 。
优点:
1·使用线程可以把占据时间长的程序中的任务放到后台去处理
2·用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理 , 可以弹出一个进度条来显示处理的进度
3·程序的运行速度可能加快
4·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了 。在这种情况下可以释放一些珍贵的资源如内存占用等等 。
5.多线程技术在IOS软件开发中也有举足轻重的位置 。
缺点:
1如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换 。
2·更多的线程需要更多的内存空间 。
3·线程可能会给程序带来更多“bug”,因此要小心使用 。
4·线程的中止需要考虑其对程序运行的影响 。
多线程cpu有什么好处java线程调度CPU对于各个线程的调度是随机的(分时调度),在Java程序中,JVM负责线程的调度 。线程调度是指按照特定的机制为多个线程分配CPU的使用权,也就是实际执行的时候是线程,因此CPU调度的最小单位是线程 , 而资源分配的最小单位是进程 。JVM调度的模式有两种:分时调度和抢占式调度 。分时调度 是所有线程轮流获得CPU使用权,并平均分配每个线程占用CPU的时间;抢占式调度 是根据线程的优先级别来获取CPU的使用权 。JVM的线程调度模式采用了抢占式模式 。既然是抢占调度,那么我们就能通过设置优先级来“有限”的控制线程的运行顺序 , 注意“有限”一次 。CPU核数 跟多线程 的关系要说多线程就离不开进程,进程和线程的区别在这里就不详细说了,只将关键的几点:a)进程之间是 相互独立的,不共享 内存和数据,线程之间 的内存和数据是 公用的 , 每个线程只有自己的一组CPU指令、寄存器和堆栈,对于线程来说只有CPU里的东西是自己独享的,程序中的其他东西都是跟同一个进程里的其他线程共享的 。b)操作系统创建进程时要分配好多外部资源,所以开销大 。(这个跟操作系统有关,有人做过实验,window创建进程的开销大,Linux创建进程的开销就很小 。)再来说一下CPU,过去单CPU时代,最先是单任务阶段 在一个时间点 只能执行单一程序 。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程 。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行 。而现在多核CPU的情况下,同一时间点可以执行多个任务(并行),具体到这个任务在CPU哪个核上运行,这个就跟操作系统和CPU本身的设计相关了 。我们假设一个极端的情况:在一台单核计算机上只运行2个程序,一个是我们的程序A,另一个是操作系统的程序B,每个程序是一个进程 。单核CPU的时候,A和B在CPU上交替运行 , 具体的分配方式由操作系统来判断,我这里猜测应该跟A和B的线程数有关,因为线程是CPU级别的,如果A有5个线程,B也有5个线程,那么CPU分配给A和B的时间应该是1:1的;如果A增加到15个线程,CPU分配给A和B的时间应该是3:1的比例 。所以此时如果A的线程数多,那么获得的CPU执行次数就多 , 处理的速度也就快了 。以上假设的前提是:①A和B的优先级相同,②A和B都是只消耗CPU资源的程序 。如果相同的情况用一个双核的计算机来处理又会是什么结果呢?假设这个双核的计算机和操作系统比较傻,把A进程分配到核1上 , B进程分配到核2上,那不管A有几个线程,都是用核1来处理,那么时间肯定是一样的 。不过现实中应该不会有这么傻的CPU和操作系统吧 。所以赶紧还是会根据线程来进行处理 , 当A的线程比B多时,会占用核2来处理A的线程 。刚才说的是只消耗CPU资源的程序,但这样的程序在实际应用中基本上是没有的,总会有跟资源打交道的 。比如读个文件,查个数据库 , 访问一个网络连接等等 。这个时候多线程才真正体现出优势,在一个进程中 , 线程a去读文件,线程b去查数据库 , 线程c去访问网络,a先用一下CPU,然后去读文件 , 此时CPU空闲,b就用一下,然后去查数据库,相对于读文件、查数据库、访问网络来说CPU计算的时间几乎可以忽略不计,所以多线程实际上是计算机多种资源的并行运用,跟CPU有几个核心是没什么关系的 。
- qq飞车论坛
- 计算机多媒体技术
- 丝袜长霉斑怎么洗掉 丝袜长霉斑有什么去除方法
- 其他垃圾应该投入什么颜色的垃圾桶 其他垃圾的垃圾桶是什么颜色
- 树叶可以用来做什么 树叶的用途
- 什么是路由器
- 运行时错误1004
- rp是什么意思
- 送男生沙漏代表什么 给男生送沙漏代表什么意思
- 一键还原ghost
