Java 多线程(二)(龟兔赛跑案例)

本文深入探讨Java多线程,通过龟兔赛跑案例解释线程同步的概念,分析线程阻塞的机制,包括sleep(), join(), yield()和wait()方法,以及线程死锁的产生原因和解决方案。通过模拟多线程环境,展示了如何避免死锁并实现线程安全的龟兔赛跑比赛。" 102540067,1429671,Unity UIElements:高性能渲染与优势解析,"['Unity开发', '游戏UI', 'UI渲染', '性能优化', 'UIBuilder']

4.线程同步

  • 同步方法

  • 在方法上添加Synchronized修饰符,往对象上加锁

    • 非静态同步方法:

      • 锁加在this(对象上)

    • 静态同步方法:

      • 加在类.class(对象)

锁的释放:

同步方法:锁住的代码范围整个方法,锁的控制粒度太宽

  • 同步代码块

public 返回值类型 方法名(){
 //...
 synchronized(锁对象){
     //锁住的代码
 }
 //...
}

特点:

  1. 锁对象任意的,this,类.class(对象)

  2. 锁住的只是方法的一部分

缺点:

  1. 效率低

  2. 容易死锁

模拟:多窗口出售某趟车的车票

分析:

多窗口:多个线程

卖票:任务

共享资源:票

package study;

public class Tcket implements Runnable{
    //票数
    private int count = 10;
    pri
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值