(Java语言程序设计)进程和线程的基本概念


进程和线程的基本概念

1、进程:

有入口、有出口,占用CPU、内存、端口等资源的相对独立的完整的过程。

2、线程:

一个按顺序执行的语句顺序来完成某一特定的功能,有线程触发执行

  • 在java中,除了jvm是一个进程外,其他所有任务都是以线程的方式执行。

3、中断睡眠:

interrupt强制唤醒随眠状态的线程,可以进入就绪状态等待CPU调度。

4、并发操作:

多个线程可以同时操作一个资源,会带来安全问题,用什么方式来解决?

CPU对就绪队列的每一个线程的调度顺序是随机的,分配的时间也是随机的

二、线程的结构

在java中,线程由以下三个部分组成:

  • 1、虚拟CPU,封装在java.lang.Thread类中,控制整个线程的运行
  • 2、执行的代码,传递给Thread类,由thread类控制执行
  • 3、处理的数据,传递给Thread

三、线程的状态

  • 1、新建:还未启动,不可运行,但是已经拥有相应的内存空间和其他资源

  • 2、可运行:已经启动,处于线程的run()方法中,只要cpu空闲,就马上运行,可运行的线程都会在队列中等待cpu来执行。调用start()可以启动线程,让其进入就绪队列。

  • 3、死亡:要么是run()方法中最后一个语句执行完毕,要么是当前线程遇到异常退出。

  • 4、阻塞:当执行线程的时候出现异常被暂停执行,必须等待问题解决以后才能进入就绪队列,否则不能被继续执行。

  • 5、中断线程:调用interrupt类中止线程

四、线程的创建

方式一:

  • 继承Thread类,重写run()方法,就是线程需要执行的任务代码
  • new这个新建的类对象,表示创建一个该线程对象
  • 调用start方法来开启线程执行任务(会自动调用run()方法)

cpu是随机调度,首先先执行mian方法的线程

方式二:

  • 实现Runnable接口,重写run()方法
  • 2、创建Thread对象来创建线程对象,并且将实现了runnable接口的对象作为参数传递给Thread()构造方法.
  • 3、调用start()方法来启动线程,执行run中的任务

五、两种方式的区别

继承Thread类的方式:

  • 当一个run()方法置于thread的子类的时候,可以直接使用创建出来的对象调用start()方法启动线程,代码比较简洁

实现Runnable接口的方式(常用)

  • java中只允许单继承,当类继承了Thread的时候就不能继承其他的类时,此时可以使用Runnable接口来实现其他所需要的接口,代码比较灵活。

六、线程相关的常用方法

Thread 中的方法

  • isAlive: 表示一个可运行的线程
  • currentThread: 获取当前线程对象
  • getName: 获取当前线程的名字
  • getPriority: 获取线程的优先级:1~10 默认值为5 MIN_PRIOPITY(1)-最小
  • run 封装的是线程开启后要执行的任务代码

分类:Java
标签: 多线程
文章目录