1、线程的类型

    1.1  用户线程

          

    1.2  内核线程

          

  

          

2、java线程

        java线程的创建依赖于系统内核,通过JVM调用系统库创建内核线程;

        内核线程与java-Thread是1:1的映射关系;

3、线程池

       3.1  什么时候使用线程池?

            a,单个任务处理的时间比较短;

            b,需要处理的任务数量比较大;

       

          

4、多线程并发

        

5、多线程并发产生不安全的原因

        

        stock原来为5;

        3个线程(各线程间互不可见)分别从主存中获取stock=5,然后各自执行stock--;

        3个线程都执行成功stock=4,库存实际减了3,但各个线程都向主存回写stock=4,导致stock只减了一个;

        造成数据不安全;

6、Synchronized实现线程同步

package com.an.lock;

public class Test {

    private static Object object=new Object();

    /**
* 库存操作
*/
public void downStock(){
synchronized (object){
//1、从数据库查询库存
//2、执行stock--
//3、执行SQL修改库存
}
}
}

  

        

        【总结】:

          1.1  synchronized底层使用JVM的lock、unlock操作;

          1.2  当某一个线程获得对同步监视器的锁定时,其他线程进入阻塞状态;

              当某个线程对同步监视器释放锁,其他线程将被唤醒,去争夺锁;

7、Lock实现线程同步

最新文章

  1. SQL语句查询某表的所有字段及数据类型
  2. linux shell脚本通过参数名传递参数值
  3. sizeWithFont方法被弃用了,该怎么办?
  4. ♫【jQuery插件】图片放大镜
  5. Laravel Quickstart
  6. CentOS7上GitLab的使用
  7. 主成分分析_PCA解释
  8. 第 10 章 容器监控 - 080 - Weave Scope 容器地图
  9. python基础之作业1---用户登录
  10. XSS学习(一)
  11. SkyWalking-netcore
  12. MIME 类型
  13. Java 并发工具包 | J.U.C
  14. Java中的引用类型Scanner类和随机类型Random
  15. [javaSE] 看知乎学习反射
  16. E 定向 牛客练习赛25
  17. Java日期和时间
  18. iOS 根据圆心的坐标点、半径、当前手势所在的坐标点,计算出圆的运动轨迹坐标
  19. HDU 4651 数论 partition 求自然数的拆分数
  20. OpenGL模型视图变换、投影变换、视口变换的理解

热门文章

  1. python中生成器generator
  2. MySQL innodb的组合索引各个列中的长度不能超过767,
  3. Cadence 学习
  4. mysql-M-S-S模型 中继器 级联
  5. EF框架之——Code First以及踩过的这些“坑”
  6. vc code 一个非常不错的插件
  7. 在Linux上安装MySQL
  8. Linux命令行基础操作
  9. Python入门习题7.分别统计输入各类字符个数
  10. python------生产者消费者模型 和 管道