18.2.6 匿名内部类的方式

使用匿名内部类的方式来创建和启动线程

案例代码

**package com.lagou.task18;**
**public class ThreadNoNameTest {**
** public static void main(String[] args) {**
** // 匿名内部类的语法格式:父类/接口类型 引用变量名 = new 父类/接口类型() { 方法的重写 };**
** // 1.使用继承加匿名内部类的方式创建并启动线程**
** /*Thread t1 = new Thread() {**
** @Override**
** public void run() {**
** System.out.println("张三说:在吗?");**
** }**
** };**
** t1.start();*/**
** new Thread() {**
** @Override**
** public void run() {**
** System.out.println("张三说:在吗?");**
** }**
** }.start();**
** // 2.使用实现接口加匿名内部类的方式创建并启动线程**
** /*Runnable ra = new Runnable() {**
** @Override**
** public void run() {**
** System.out.println("李四说:不在。");**
** }**
** };**
** Thread t2 = new Thread(ra);**
** t2.start();*/**
** /*new Thread(new Runnable() {**
** @Override**
** public void run() {**
** System.out.println("李四说:不在。");**
** }**
** }).start();*/**
** // Java8开始支持lambda表达式: (形参列表)->{方法体;}**
** /*Runnable ra = ()-> System.out.println("李四说:不在。");**
** new Thread(ra).start();*/**
** new Thread(()-> System.out.println("李四说:不在。")).start();**
** }**
**}**

18.3 线程的生命周期(熟悉)

image.png

  • 新建状态 - 使用new关键字创建之后进入的状态,此时线程并没有开始执行。
  • 就绪状态 - 调用start方法后进入的状态,此时线程还是没有开始执行。
  • 运行状态 - 使用线程调度器调用该线程后进入的状态,此时线程开始执行,当线程的时间片执行完
  • 毕后任务没有完成时回到就绪状态。
  • 消亡状态 - 当线程的任务执行完成后进入的状态,此时线程已经终止。
  • 阻塞状态 - 当线程执行的过程中发生了阻塞事件进入的状态,如:sleep方法。
  • 阻塞状态解除后进入就绪状态。