JavaSE---多线程---扩展

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实现线程同步

 

posted on 2019-09-17 17:49  anpeiyong  阅读(138)  评论(0编辑  收藏  举报

导航