ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

解决线程安全问题_Lock锁,线程状态概述

2022-07-08 10:35:19  阅读:82  来源: 互联网

标签:Thread Lock void 接口 线程 lock 概述


解决线程安全问题_Lock锁:

解决线程安全问题的三种方案:使用Lock锁

java.utiL.concurrent.Locks.Lock接口

lock_实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作。

Lock接口中的方法:

void Lock()获取锁。

void unLock()释放锁。

java.utiL.concurrent.Locks.ReentrantLock impLements Lock接口

使用步骤:

1.在成员位置创建一个ReentrantLock对象

2.在可能会出现安全问题的代码前调用Lock接口中的方法Lock获取锁

3.在可能会出现安全问题的代码后调用L ock接口中的方法unLock释放锁

public class suo implements Runnable{
    private int tickets =100;

    Lock lock = new ReentrantLock();
    /**
     * 执行卖票操作
     */
    @Override
    public void run() {
        //每个窗口卖票的操作
        //窗口 永远开启
        while (true){
            lock.lock();
            if (tickets>0){//有票  可以卖
                //出票操作
                //使用sleep模拟一下出票时间
                try {
                    Thread.sleep(50);
                }catch (InterruptedException e){
                    //  TODO Auto-generated catch block
                    e.printStackTrace();
                }
                //获取当前线程对象的名字
                String name = Thread.currentThread().getName();
                System.out.println(name+"正在卖:"+tickets--);
            }
            lock.unlock();
        }
    }
}

 

 

 

 

线程状态概述:

当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。

在线程的生命周期中,有几种状态呢﹖在API中java.lang. Thread.state这个枚举中给出了六种线程状态︰

 

 

搜索

复制

标签:Thread,Lock,void,接口,线程,lock,概述
来源: https://www.cnblogs.com/hungui/p/16457310.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有