java多线程

本文详细介绍了Java中的多线程概念,包括线程的创建、运行和管理。通过继承Thread类或实现Runnable接口来创建线程,并探讨了线程状态、调度、优先级、同步方法等关键知识点。同时,强调了直接调用run()与启动线程的区别。此外,还讨论了线程安全问题,如StringBuffer和StringBuilder的线程安全特性。

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

什么是多线程

        如果在一个进程中同时运行了多个线程,用来完成不同的工作,则称之为“多线程”

        多个线程交替占用CPU资源,而非真正的并行执行

多线程好处

        充分利用CPU的资源

        简化编程模型

        带来良好的用户体验

Thread类

        Java提供了java.lang.Thread类支持多线程编程

主线程

        main()方法即为主线程入口

        产生其他子线程的线程

        必须最后完成执行,因为它执行各种关闭动作

在Java中创建线程的两种方式

        继承java.lang.Thread类

        实现java.lang.Runnable接口

使用线程的步骤

        定义线程>创建线程对象>启动线程>终止线程

继承Thread类创建线程

启动线程是否可以直接调用run()方法? 

        直接调用run()方法只是执行了方法内的语句,并没有启动线程

        只有主线程一条执行路径

        调用start()是启动线程,用子线程去执行run()方法

        多条执行路径,主线程和子线程并行交替执行

通过Thread类或者Thread的子类创建的对象,是子线程对象
在使用子线程对象调用start()时,会自动调用run(),此时
在run方法中使用Thread.currentThread()获取的是子线程的名称
但如果在main中直接使用子线程对象调用run(),获取的是主线程的名字

实现Runnable接口创建线程

 继承Thread类

        编写简单,可直接操作线程

        适用于单继承

实现Runnable接口

        避免单继承局限性

        便于共享资源

线程的状态

 线程调度

        线程调度指按照特定机制为多个线程分配CPU的使用权

线程优先级

        线程优先级由1~10表示,1最低,默认优先级为5

        优先级高的线程获得CPU资源的概率较大 

线程休眠

        让线程暂时睡眠指定时长,线程进入阻塞状态

        睡眠时间过后线程会再进入可运行状态

线程的强制运行

        使当前线程暂停执行,等待其他线程结束后再继续执行本线程

线程的礼让

        暂停当前线程,允许其他具有相同优先级的线程获得运行机会

        该线程处于就绪状态,不转为阻塞状态

同步方法

同步代码块

 

 多个并发线程访问同一资源的同步代码块时

        同一时刻只能有一个线程进入synchronized(this)同步代码块

        当一个线程访问一个synchronized(this)同步代码块时,其他synchronized(this)同步代码块同样被锁定

        当一个线程访问一个synchronized(this)同步代码块时,其他线程可以访问该资源的非synchronized(this)同步代码

线程安全的类型

常见类型对比

 StringBuffer  &&  StringBuilder

前者线程安全,后者非线程安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值