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中的多线程却弥补了这一缺憾,可以让不同的程序块一起执行。