那么多线程就很容易理解:多线程就是指一个进程中同时有多个执行路径(线程)正在执行,线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;(2)进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.(4)二者均可并发执行.简述线程与进程的区别及优缺点进程优点:每个进程互相独立,在线程系统中进程也是一个线程,而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)3、内存分配方面区别系统在运行的时候会为每个进程分配不同的内存空间,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),每一个线程都是进程中的一条执行路径,return停止线程:在run方法中 使用 this.interrupted();判断线程终止状态。
多线程是指什么
多线程的概念?说起多线程,那么就不得不说什么是线程,而说起线程,又不得不说什么是进程。进程(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.守护线程。希望对您有所帮助!~
进程和线程的区别是什么
1、功能不同
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
2、工作原理不同
在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。
3、作用不同
进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。
什么是线程和进程区别
什么是进程(Process):普通的解释就是,进程是程序的一次执行,而什么是线程(Thread),线程可以理解为进程中的执行的一段程序片段。在一个多任务环境中下面的概念可以帮助我们理解两者间的差别:进程间是独立的,这表现在内存空间,上下文环境;线程运行在进程空间内。 一般来讲(不使用特殊技术)进程是无法突破进程边界存取其他进程内的存储空间;而线程由于处于进程空间内,所以同一进程所产生的线程共享同一内存空间。同一进程中的两段代码不能够同时执行,除非引入线程。线程是属于进程的,当进程退出时该进程所产生的线程都会被强制退出并清除。线程占用的资源要少于进程所占用的资源。进程和线程都可以有优先级。在线程系统中进程也是一个线程。可以将进程理解为一个程序的第一个线程。线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;(2)进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.(4)二者均可并发执行.
简述线程与进程的区别及优缺点
进程优点:每个进程互相独立,不影响主程序的稳定性,子进程崩溃没关系;
缺点:需要跨进程边界,如果有大数据量传送,就不太好,适合小数据量传送、密集运算 多进程调度开销比较大。
线程优点:无需跨进程边界;
缺点:每个线程与主程序共用地址空间,受限于2GB地址空间;
区别:
1、操作系统资源管理方式区别
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
2、所处环境区别
在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
3、内存分配方面区别
系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
参考资料来源:百度百科—进程
百度百科—线程