问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是多线程技术?

发布网友 发布时间:2022-04-23 14:07

我来回答

4个回答

热心网友 时间:2022-04-27 17:16

多线程的概念?
说起多线程,那么就不得不说什么是线程,而说起线程,又不得不说什么是进程。
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
进程可以简单的理解为一个可以独立运行的程序单位。它是线程的集合,进程就是有一个或多个线程构成的,每一个线程都是进程中的一条执行路径。
那么多线程就很容易理解:多线程就是指一个进程中同时有多个执行路径(线程)正在执行。
为什么要使用多线程?
1.在一个程序中,有很多的操作是非常耗时的,如数据库读写操作,IO操作等,如果使用单线程,那么程序就必须等待这些操作执行完成之后才能执行其他操作。使用多线程,可以在将耗时任务放在后台继续执行的同时,同时执行其他操作。
2.可以提高程序的效率。
3.在一些等待的任务上,如用户输入,文件读取等,多线程就非常有用了。
缺点:
1.使用太多线程,是很耗系统资源,因为线程需要开辟内存。更多线程需要更多内存。
2.影响系统性能,因为操作系统需要在线程之间来回切换。
3.需要考虑线程操作对程序的影响,如线程挂起,中止等操作对程序的影响。
4.线程使用不当会发生很多问题。
总结:多线程是异步的,但这不代表多线*的是几个线程是在同时进行,实际上是系统不断地在各个线程之间来回的切换(因为系统切换的速度非常的快,所以给我们在同时运行的错觉)。
2.多线程与高并发的联系。
高并发:高并发指的是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问或者socket端口集中性收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。如果高并发处理不好,不仅仅降低了用户的体验度(请求响应时间过长),同时可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。如果要想系统能够适应高并发状态,则需要从各个方面进行系统优化,包括,硬件、网络、系统架构、开发语言的选取、数据结构的运用、算法优化、数据库优化……。
而多线程只是在同/异步角度上解决高并发问题的其中的一个方法手段,是在同一时刻利用计算机闲置资源的一种方式。
多线程在高并发问题中的作用就是充分利用计算机资源,使计算机的资源在每一时刻都能达到最大的利用率,不至于浪费计算机资源使其闲置。
3.线程的创建,停止,常用方法介绍。
1.线程的创建:
线程创建主要有2种方式,一种是继承Thread类,重写run方法即可;(Thread类实现了Runable接口)
另一种则是实现Runable接口,也需要重写run方法。
线程的启动,调用start()方法即可。 我们也可以直接使用线程对象的run方法,不过直接使用,run方法就只是一个普通的方法了。

其他的还有: 通过匿名内部类的方法创建;实现Callable接口。。。。。

2.线程常用方法:
currentThread()方法:该方法返回当前线程的信息 .getName()可以返回线程名称。

isAlive()方法:该方法判断当前线程是否处于活动状态。
sleep()方法:该方法是让“当前正在执行的线程“休眠指定的时间,正在执行的线程是指this.currentThread()返回的线程。
getId()方法:该方法是获取线程的唯一标识。
3.线程的停止:
在java中,停止线程并不简单,不想for。。break那样说停就停,需要一定的技巧。

线程的停止有3种方法:
1.线程正常终止,即run()方法运行结束正常停止。
2.使用interrupt方法中断线程。
3.使用stop方法暴力停止线程。
interrupt方法中断线程介绍:
interrupt方法其实并不是直接中断线程,只是给线程添加一个中断标志。
判断线程是否是停止状态:
this.interrupted(); 判断当前线程是否已经中断。(判断的是这个方法所在的代码对应的线程,而不是调用对象对应的线程)

this.isInterrupted(); 判断线程是否已经中断。(谁调用,判断谁)

注:.interrupted()与isInterrupted()的区别:
interrupted()方法判断的是所在代码对应的线程是否中断,而后者判断的是调用对象对应的线程是否停止
前者执行后有清除状态的功能(如连续调用两次时,第一次返回true,则第二次会返回false)
后者没有清除状态的功能(两次返回都为true)
真正停止线程的方法:
异常法:
在run方法中 使用 this.interrupted();判断线程终止状态,如果为true则 throw new interruptedException()然后捕获该异常即可停止线程。

return停止线程:
在run方法中 使用 this.interrupted();判断线程终止状态,如果为true则return停止线程。 (建议使用异常法停止线程,因为还可以在catch中使线程向上抛,让线程停止的事件得以传播)。

暴力法:
使用stop()方法强行停止线程(强烈不建议使用,会造成很多不可预估的后果,已经被标记为过时)
(使用stop方法会抛出 java.lang.ThreadDeath 异常,并且stop方法会释放锁,很容易造成数据不一致)
注:在休眠中停止线程:
在sleep状态下停止线程 会报异常,并且会清除线程状态值为false;
先停止后sleep,同样会报异常 sleep interrupted;

4.守护线程。
希望对您有所帮助!~

热心网友 时间:2022-04-27 18:34

是为了提高CPU的利用率
可以把一个正在运行的软件看做一个进程,就像一个大的管道,这个管道不运送什么东西,但里面有很多个小的管道,每个小管负责的东西不同~~而这些小管道就可以看做是一个个线程~如果运行的是一个单线程的程序的话,而这个线程需要连续运行几个功能时,如果正在运行的那个功能因碰到一个等待或者睡眠的指令的话,他就会停在那里不做任何事,此是这个CPU就空闲在那里,同时还会等待知道程序重新继续运行~~如果使用多线程技术,那么可以把这几个功能同时(并不是绝对意义上的同时)运行,当其中一个功能遇到睡眠指令的时候,其他没有睡眠的继续运行,这个可以花更短的时间,让CPU更充分的被利用来完成需要的事情~线程通常共享一个代码区,但有各自独立的数据存储区

热心网友 时间:2022-04-27 20:09

比如说装潢房子,我是包工头(==主线程),下面有 木匠,瓦匠,电工(各线程),我给他门发钱让他们开始干活(BeginThread启动线程),然后他们开始干,电工先用一天的时间拉好线路,瓦匠用一天的时间满好水泥,木匠用一天的时间做好门窗,我用一天的时间去检查质量,或者我也干点活,(各线程分配的时间片)
总知,一人干活,3个人什么也不干,(如果是多核CPU据说会真正的实现多线程,比如现在的双核),当然这时间片可以通过几个函数去设计他们的优先级别,比如让瓦匠干两天,木匠1天,电工半天~~
更详细的信息,你可以去迅雷网站(www.xunlei.com)搜 《VC++深入详解》[孙鑫](视频+源码+PPT课件) 看晚孙老师得教程,你不只学会了VC++而且,学会了思考~~~~(很多的思考方式)

热心网友 时间:2022-04-27 22:00

就是不止1个线程
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何批量导出全部微信好友微信号?快速导出微信联系人 交强险什么价格 命运冠位指定必练五星英灵是什么 命运冠位指定必练五星英灵推荐 自制豆沙馅能保存多久 红豆沙馅怎么保存 我高三,从现在到高考分数从350提到500多,有可能吗?我是文科生 高三350分还有5个月能提多少分 文科复读350多分可以提高多少 钱钟书-谈艺录-读本目录 送茶叶都有什么讲究呢? 中国文化送礼茶叶有什么讲究茶叶送礼有什么讲究和注意事项 C# 多线程的使用。如何使用多线程? 在编程中,什么时候使用多线程 线程的作用以及什么地方会用到多线程 什么是多线程编程?什么时候使用 怎么理解多线程,为什么要用多线程 使用多线程应注意些什么? 怎么写补充协议书 多线程的适用场景是什么?为啥要用多线程 已签订好的合同,现在想补充合同内容,如何做? 工程结算价大于合同价 需补签合同吗 房屋买卖补充协议书有效吗? 编程中什么时候使用多线程? 合同补充协议的合同期限超过了原合同的合同期限,补充协议在原合同终止或... 二手房补充协议的问题 合同补充协议书怎么写才有效 补充协议的法律效力 合同补充协议书范本 增加费用补充协议范本 怎样写补充协议书? 鳖如何宰杀 如何理解运用多线程 传染病预防,控制预案应当包括哪些主要内容 Android开发中如何使用多线程 河南省手足口病等肠道病毒感染性疾病防治应急预案(试行) C++中程序在哪些场合应该使用多线程 艾滋病应急预案 在多线程中使用lock需要注意哪些地方 公司企业复工复产传染病防控工作应急预案 vivox21恢复出厂设置黑屏了怎么办,没有关机? 诊所传染病应急预案怎样写 超5类/5类的网线可以用〖超六类的非屏蔽/屏蔽〗的(水晶头)压么!? 公共场所空气传播性疾病应急预案 网线和电话公用一条超五类网线如何压水晶头和模块 手足口病防控应急预案 冬春季呼吸道传染病防治工作预案 学校防控传染病延迟开学期间“停课不停学”实施方案-应急预案【最全】 做梦梦到和售货员吵架是什么意思? 今天梦见 和超市里的售货员人吵架 醒来之后还沉浸在吵架中 有什么寓意吗 网线的“超五类”、“超六类”和“超七类”都是什么意思? 梦见售货员不卖给我牛奶我跟她吵架生气?