美文网首页
001--【并发】并发问题入门

001--【并发】并发问题入门

作者: 糖纸疯了 | 来源:发表于2020-07-20 00:55 被阅读0次

1、写在前面

在此记录,以备遗忘


2、核心操作

2.1、厕所问题

2.2、并发场景

2.3、厕所问题代码实现


3、具体操作

3.1、厕所问题

  • 1)一个人使用厕所时,不用排队,只要能解决生理问题,其他都可以忽略
  • 2)现在用户变多了,私有厕所变成了公共厕所,每个时间点都可能有多个人进行使用,怎么解决这个问题?

加一把锁不就好了,如果们被锁住了,就代表有人在使用这个厕所,问题完美被解决了!

3.2、并发场景

并发问题就是解决【多个线程】使用【同一个公共资源】的事情!

  • 1)多线程同时改变一个数据
  • 2)多个线程在高并发只获取指定的一个数据【单例模式】
  • 3)银行转账【同一时间可能存款、可能取款】
  • 4)....

3.3、厕所问题代码实现

直接在业务逻辑上添加synchronized关键字即可

public class Test02Main {
    // 执行业务逻辑-添加synchronized关键字
    public synchronized static void accesResource() {
        try {
            // 1、直接使用线程进行休眠
            // Thread.sleep(2);
            // 2、使用时间工具类进行休眠
            TimeUnit.SECONDS.sleep(2);//2秒钟
            System.out.println(Thread.currentThread().getName() + "----is running");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    // 创建多个线程执行主业务
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            new Thread(Test02Main::accesResource).start();
        }
    }
}


4、课后习题

4.1、多线程使用方法

参考网址:https://www.jianshu.com/p/af6299f7cdff

4.2、synchronized使用方法

参考:https://www.jianshu.com/p/aed8ce46660f


5、参考网址

相关文章

网友评论

      本文标题:001--【并发】并发问题入门

      本文链接:https://www.haomeiwen.com/subject/nzulkktx.html