Java基础-----线程

2021/12/11 14:18:21

本文主要是介绍Java基础-----线程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java基础-----线程

文章目录

  • 一、多线程介绍
    • 1.1、多线程的基本概念
      • 1.1.1、程序
      • 1.1.2、进程
      • 1.1.3、线程
      • 1.1.4、进程和线程的区别
      • 1.1.5、什么是并发
      • 1.1.6、线程的执行特点
      • 1.1.6、什么是主线程和子线程
        • 1.1.6.1、主线程
        • 1.1.6.2、主线程特点
        • 1.1.6.3、子线程
  • 二、线程的创建
    • 2.1、通过继承Thread类实现多线程
    • 2.2、通过实现Runnable接口实现多线程
    • 2.3、线程的执行流程
    • 2.4、线程的生命周期
  • 三、线程的使用
    • 3.1、线程的使用
    • 3.2、暂停当前执行sleep/yield
      • 3.2.1、sleep的使用
      • 3.2.2、yield的使用
      • 3.1.3、线程的联合
        • 3.1.3.1、join方法
      • 3.14、线程联合案例
      • 3.1.5、Thread类中的其他常用方法
      • 3.1.6、获取线程的名称
        • 3.1.6.1、方式一
        • 3.1.6.2、方式二
      • 3.1.7、设置线程的名称
        • 3.1.7.1、方式一
        • 3.1.7.2、方式二
      • 3.1.8、判断当前线程是否存活
  • 四、线程的优先级
    • 4.1、什么是线程的优先级
    • 4.2、线程优先级的使用
  • 五、守护线程
    • 5.1、什么是守护线程
    • 5.2、守护线程和用户线程的区别
    • 5.2、守护线程的使用
  • 六、线程同步
    • 6.1、什么是同步线程
    • 6.2、同步线程的提出
    • 6.3、同步线程的概念
    • 6.4、线程冲突案例演示
    • 6.5、实现线程同步
      • 6.5.1、使用synchronized关键字需要考虑的问题
        • 6.5.1.1、synchronized方法
        • 6.5.1.2、synchronized块
      • 6.5.2、修改线程冲突案例演示
    • 6.6、线程的同步
      • 6.6.1、使用this作为线程对象锁
      • 6.6.2、使用字符串作为线程对象锁
      • 6.6.2、使用Class作为线程对象锁
      • 6.4使用自定义对象作为线程对象锁
    • 6.7、死锁及解决方案
      • 6.7.1、死锁的概念
      • 6.7.2、死锁案例演示
      • 6.7.3、死锁问题的解决
  • 七、线程并发协作(生产者/消费者模式)
    • 7.1、角色介绍
    • 7.2、什么缓冲区?
    • 7.3、实现生产者和消费者模式
    • 7.4、线程并发协作总结


一、多线程介绍

1.1、多线程的基本概念

1.1.1、程序

在这里插入图片描述
在这里插入图片描述

1.1.2、进程

在这里插入图片描述
在这里插入图片描述

1.1.3、线程

在这里插入图片描述
在这里插入图片描述

1.1.4、进程和线程的区别

在这里插入图片描述

1.1.5、什么是并发

在这里插入图片描述

1.1.6、线程的执行特点

在这里插入图片描述
在这里插入图片描述

1.1.6、什么是主线程和子线程

1.1.6.1、主线程

在这里插入图片描述

1.1.6.2、主线程特点

在这里插入图片描述
在这里插入图片描述

1.1.6.3、子线程

在这里插入图片描述


二、线程的创建

2.1、通过继承Thread类实现多线程

在这里插入图片描述
在这里插入图片描述

2.2、通过实现Runnable接口实现多线程

在这里插入图片描述

2.3、线程的执行流程

**在这里插入图片描述**

2.4、线程的生命周期

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


三、线程的使用

3.1、线程的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2、暂停当前执行sleep/yield

3.2.1、sleep的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.2、yield的使用

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.1.3、线程的联合

在这里插入图片描述

3.1.3.1、join方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.14、线程联合案例

在这里插入图片描述
在这里插入图片描述

3.1.5、Thread类中的其他常用方法

3.1.6、获取线程的名称

3.1.6.1、方式一

在这里插入图片描述
在这里插入图片描述

3.1.6.2、方式二

在这里插入图片描述
在这里插入图片描述

3.1.7、设置线程的名称

3.1.7.1、方式一

在这里插入图片描述
在这里插入图片描述

3.1.7.2、方式二

在这里插入图片描述
在这里插入图片描述

3.1.8、判断当前线程是否存活

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、线程的优先级

4.1、什么是线程的优先级

在这里插入图片描述

4.2、线程优先级的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、守护线程

5.1、什么是守护线程

在这里插入图片描述
在这里插入图片描述

5.2、守护线程和用户线程的区别

在这里插入图片描述

5.2、守护线程的使用

在这里插入图片描述

在这里插入图片描述


六、线程同步

6.1、什么是同步线程

在这里插入图片描述

6.2、同步线程的提出

在这里插入图片描述

6.3、同步线程的概念

在这里插入图片描述

6.4、线程冲突案例演示

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.5、实现线程同步

在这里插入图片描述

6.5.1、使用synchronized关键字需要考虑的问题

在这里插入图片描述

在这里插入图片描述

6.5.1.1、synchronized方法

在这里插入图片描述

6.5.1.2、synchronized块

在这里插入图片描述

6.5.2、修改线程冲突案例演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.6、线程的同步

6.6.1、使用this作为线程对象锁

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6.6.2、使用字符串作为线程对象锁

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.6.2、使用Class作为线程对象锁

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.4使用自定义对象作为线程对象锁

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.7、死锁及解决方案

6.7.1、死锁的概念

在这里插入图片描述

6.7.2、死锁案例演示

在这里插入图片描述
在这里插入图片描述

6.7.3、死锁问题的解决

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


七、线程并发协作(生产者/消费者模式)

在这里插入图片描述

7.1、角色介绍

在这里插入图片描述

7.2、什么缓冲区?

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

7.3、实现生产者和消费者模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.4、线程并发协作总结

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述




这篇关于Java基础-----线程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程