zoukankan      html  css  js  c++  java
  • Java高并发至Synchronized

    Synchronized的作用

      能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果。

    并发编程的地位:

      关键字,被java原生支持,实现互斥的基本手段、是研究高并发的基础。

    不使用并发手段会有什么样的后果:

      例如i++的操作,如果不使用同步的话会线程不安全。

    Synchronized的两种使用方式:

      对象锁(方法锁、同步代码块锁),类锁(被Synchronized修饰的静态方法、锁为Class对象)。

    多线程的三个核心思想:

      1、一把锁只能同时被一个线程占有,那些拿到锁的线程必须等待。

      2、每个实例都对应有自己的一把锁,不同的实例之间互不影响(例外:锁对象是*.class或被synchronized修饰的static方法时所有对象公用一把锁)

      3、无论方法是异常抛抛错还是正常结束,JVM都会自己释放锁。

    常见的面试问题:

      1、两个线程同时访问一个对象的同步方法会怎么样? -- 锁对象的this,所以两个线程串行

      2、两个线程访问两个两个对象的同步方法会怎么样? --锁对象不同,所以和普通方法没有区别

      3、如果两个线程访问的是被Synchronized修饰静态方法呢?--锁对象是类锁,所以还是串行

      4、同时访问同步和非同步方法呢? 线程并行,Synchronized只作用与一个方法中,内部调了非静态方法(没有被修饰的)是不会有任何同步效果的

      5、访问同一对象不同的普通同步方法呢?  --线程并行

      6、同时访问一个静态的和非静态的同步方法呢?--线程并行

      7、方法抛出后会释放锁码?--会

  • 相关阅读:
    TCP与UDP的差别以及TCP三次握手、四次挥手
    MAC帧格式、IPV4数据报格式、TCP报文格式、UDP数据报格式
    维特比算法(Viterbi)-实例讲解(暴力破解+代码实现)
    对ajax的理解
    get与post两种方式的优缺点
    什么是Ajax和JSON,它们的优缺点
    浅谈一下如何避免用户多次点击造成的多次请求
    ajax是什么?
    同步和异步的区别?
    如何解决跨域问题
  • 原文地址:https://www.cnblogs.com/niuyg928/p/12888804.html
Copyright © 2011-2022 走看看