Java线程与进程
- Java线程与进程
- 什么是进程与线程
- 操作系统
- 线程
- Java中线程的实现
- 线程的运行
- 线程分类
- 线程的几种状态
- 作用
什么是进程与线程???
操作系统
现在的操作系统都是多任务系统,而多线程是一种实现方式。
进程是指运行在内存中的应用程序,例如:在windows 系统中的运行的 .exe 程序。
线程是进程中的执行单元,也是最小单位,一个进程可以有多个线程,如果一个进程只有一个线程,那么这个线程就是进程本身。
注:人看似线程是一起执行,实际上是线程争抢CPU运行权,同一时间只有一个线程运行。
线程
Java中线程的实现
继承 java.lang.Thread
一个Thread类实例只是一个对象,像Java中的任何其他对象一样,具有变量和方法,生死于堆上。
实现 java.lang.Runnable
线程的运行
Java中,每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行着。
一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。
一旦创建一个新的线程,就产生一个新的调用栈。
线程分类
线程总体分两类:用户线程和守候线程。
用户线程:在一个Java程序中创建的线程成为用户线程。
守护线程:指用户程序在运行的时候后台提供的一种通用服务的线程,比如用于垃圾回收的
垃圾回收线程。守护线程并不是用户不可分割的,
区别:
有用户线程在运行时,JVM不能关闭
守护进程是不会阻止JVM的关闭的。
没有用户线程运行时,有没有守护线程没关系,JVM都会关闭
注:用户也可以自己定义守护线程。
线程的几种状态
线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。
创建:已经被实例化,但是没有执行 start() 方法。
就绪:已经运行 start() 方法,但是还没有被调度程序所调用。
运行:已经被调度程序调用,并且运行了 run() 方法
阻塞:在 run() 方法期间被暂停,也就是:sleep、wait 等方法被调用。
死亡:线程run() 方法运行结束或者调用 stop() 方法。
注:已经死亡的线程无法再放回就绪
作用
很多语言,只能智能的执行一段程序块,而java中的多线程却弥补了这一缺憾,可以让不同的程序块一起执行。