Java多线程的概念和原理

Java多线程的概念和原理_第1张图片

一、操作系统中线程和进程的概念

要理解线程,首先要理解并发的概念。并发是指在同一时间点,计算机可以同时执行多个任务。当前主流的操作系统,不管是Window系统,还是Linux系统,都是以多任务执行程序的。例如,我们可以在编写Java代码的同时听音乐、发送电子邮件等。
在多任务系统中,每个独立执行的任务(应用程序)称为进程,多个任务可以并发执行。下图是Windows 7系统任务管理器中的进程,从中可以看到当前操作系统中有多个任务同时在执行。
Java多线程的概念和原理_第2张图片
严格来说,多任务系统并不是真正地并发执行多个任务,在单核CPU系统中,操作系统会根据很小的时间间隔交替执行多个任务(应用程序),使得这些应用程序看起来就像是在并行运行一样。多核CPU可以做到真正意义上的并发执行。
现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。

1、什么是多线程

前面我们编写的Java程序都是从main方法开始顺序执行每行代码,代码执行完成之后,结束整个应用程序。这样顺序执行的程序称为单线程程序,单线程程序在同一个时间内只执行一个任务。在实际处理问题的过程中,单线程程序往往不能适应复杂的业务需求。例如,在WEB项目中,多个用户通过浏览器客户端向服务器端发出请求,如果服务器端采用单线程程序处理用户发送的请求,将会导致用户等待响应时间过长,服务效率低下的问题。要想缩短用户等待时间,提高服务效率,可以采用多线程的程序来同时处理多个请求任务。
多线程程序将单个任务按照功能分解成多个子任务来执行,每个子任务称为一个线程,多个线程共同完成主任务的运行过程。例如,前面提到的WEB项目,服务器端主程序将用户的每个请求创建一个线程(子任务)去处理用户的请求,这样就可以提高服务器端的服务性能,缩短用户等待响应时间。

2、进程和线程的区别

进程是每个独立程序在计算机上的一次执行活动。例如,运行中播放器、浏览器等。运行一个程序,操作系统就启动了一个进程,进程加载程序代码、分配程序所需的资源环境,每个进程都有独立的代码和数据空间(进程上下文),进程可以由多条路径并发执行,并发执行的多条路径称为多线程。线程是比进程更小的执行单位,多个线程共享进程的代码、数据空间,但每个线程都有独立的运行栈和程序计数器。
进程是每个独立程序在计算机上的一次执行活动,线程是进程中的一个执行路径,线程依赖于进程而存在。

二、Java中的线程

创建多线程的方式:

  • 1 继承thread类
  • 2 实现runnable接口
  • 3 实现Callable接口通过FutureTask包装器来创建Thread线程
  • 4.通过线程池创建线程

一个Thread类实例只是一个对象,像Java中的任何其他对象一样,具有变量和方法,生死于堆上。Java中,每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行着。一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。一旦创建一个新的线程,就产生一个新的调用栈。

线程总体分两类:用户线程和守候线程。
当所有用户线程执行完毕的时候,JVM自动关闭。但是守候线程却不独立于JVM,守候线程一般是由操作系统或者用户自己创建的。

参考资料
1.https://blog.51cto.com/lavasoft/99150

返回专栏目录

你可能感兴趣的:(#,Java提高,#,Java并发编程)