6.线程的同步代码块&&同步方法

本文探讨了线程安全问题,如多个线程抢票时可能出现的重复票数或错误票数。通过引入锁和同步机制,提出了解决方案。详细介绍了同步代码块和同步方法的实现,包括实现Runnable接口、同步监视器的选择。总结指出,同步代码块在效率上优于同步方法,且同步方法会锁定所有相同监视器的同步方法,而同步代码块只锁定特定代码块。
摘要由CSDN通过智能技术生成

前面的买火车票的案例的代码存在线程安全问题

问题1:多个线程抢票出现相同的票数

问题2:出现错误票数,如:0,-1,-2等

原因:多个线程,在争抢资源的过程中,导致共享的资源出现问题,一个线程还没执行完,另一个线程就参与进来了,开始争抢

解决:在我的程序中,加入"锁"-->加同步-->同步监视器

方法1.同步代码块

实现Runnable接口

public class BuyTicketThread implements Runnable{
    int ticketNum=10;
    @Override
    public void run() {
        for (int i=1;i<=100;i++) {
            synchronized (this) {//把具有安全隐患的代码锁住,如果锁多了就会效率低-->this 就是这个锁
                if (ticketNum > 0) {
                    System.out.println("我在" + Thread.currentThread().ge
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值