java多线程系列--基础篇

本文围绕Java多线程展开,介绍了程序、进程和线程的概念,阐述了创建多线程的四种方式,包括继承Thread类、实现Runnable接口等。还讲解了Thread类常用方法、线程生命周期,分析了wait和sleep的区别,探讨了线程安全问题的解决办法及同步机制相关问题,最后提及线程间的通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 多线程

    • 1、概念

      • 程序:为完成特定任务,用某种语言编写的一组指令的集合

      • 进程:程序的1次执行过程,是操作系统调度和分配的最小单位

      • 线程:进程的进一步细化,是程序内部的一条执行路径,是cpu调度和执行的最小单位

    • 2、如何创建多线程

      • 方式1:继承Thread类,重写run()方法

      • 方式2:实现Runnable接口

      • 方式3:实现Callable接口,重写call()方法,实现类--》FutureTask--》Thread

      • 方式4:使用线程池

    • 3、Thread类的常用方法、线程的生命周期

      • 1、线程常用的构造器(4个)

        • 1、public Thread()

        • 2、public Thread(String name)

        • 3、public Thread(Runnable target)

        • 4、public Thread(Runnable target,String name)

      • 2、线程常用方法

        • 1、start()启动线程,调用线程的run()方法

        • 2、run() 线程要执行的逻辑操作,声明在run中

        • 3、currentThread() 获取当前执行代码的线程

        • 4、sleep(long mills) 使当前进程睡眠指定毫秒数

        • 5、yield() 释放线程的CPU执行权

        • 6、join() 在线程a中调用线程b调用join,意味着线程a进入阻塞状态,直到线程b执行结束,线程a才结束阻塞状态,继续执行

        • 7、wait() 使线程等待

      • 3、wait和sleep的区别

        (1)sleep是Thread的静态方法;wait是Object的方法,任何对象实例都能调用(2)sleep不会释放锁,也不占用锁;wait会释放锁,前提是当前线程占有锁(即代码块要在synchronized中)                                                                                        (3)它们都可以被interrupt方法中断
    • 4、如何解决线程安全问题

      • 1、多个线程共享数据操作,就有可能出现安全问题

      • 2、解决方案

        • 同步机制synchronized(重点关注共享数据及操作共享数据的代码、同步监视器保证唯一)

          • 1、同步代码块

          • 2、同步方法

        • Lock接口及其实现类

    • 5、同步机制相关问题

      • 1、懒汉式的线程安全写法

      • 2、同步机制带来死锁问题,产生的条件及规避

    • 6、线程间的通信

      • 在同步机制下,考虑线程间的通信

      • wait()、notify()、notifyAll()都需要使用在同步代码块或同步方法中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值