zoukankan      html  css  js  c++  java
  • Java并发-线程安全性

    首先了解一下多线程的概念

    多线程:两段或以上的代码同时进行,多个顺序执行流。

    并发和并行的区别

    并发:做一下这个做一下那个。

    并行:同时进行。

    线程和进程的区别

    进程:资源分配的基本单位,运行中的程序。进程中包括多个线程,线程们共享进程的资源。

    线程:处理器调度的基本单位。

    线程的状态:

     线程创建的方法:

    (1)继承Thread类 (2)实现Runnable接口 (3)匿名内部类、Lambda表达式 (4)带返回值的线程

    要想使对象是线程安全的,需要采用同步机制来协同,如果无法实现,那么可能会导致数据破坏和其他的结果,在Java机制中,提供了synchronize、volatile、显式锁等机制来进行,也有三种思路:(1)不在线程之间共享数据。(2)将状态变量修改成不可变变量。(3)在访问时使用同步。

    什么是线程安全性:某个类的行为和其规范一致。

    原子性:如果某个操作是不可分割的,那么我们就可以称之为原子性操作。

    我们在解决线程竞态问题时,不可能只靠通过设置线程安全变量来进行,Java为我们提供了加锁机制。

    内置锁:Java为我们提供了synchronize来实现内置锁,synchronize方法以Class对象作为锁。

    重入:当某个线程请求被其他线程持有的锁时,就会发生阻塞。然而由于内置锁时可重入的,因此某线程在请求一个已经由它持有的锁时,该请求就会成功。重入的实现方法时为每一个锁关联一个获取计数值和一个所有者线程,当技术值为0时,表示该锁没有被线程持有。如果重入后,计数值会加,当线程退出同步代码时,计数值会减,当计数值为0时,该锁会释放。

  • 相关阅读:
    Golang哲学思想
    Outlook与Hotmail的设置
    Android 经验: 5555 端口会被 adb 误认为 emulator
    QT程序探测所需DLL,静态连接和打包
    VS编译的QT程序发布时产生的AppCrash问题
    新语言和旧语言
    MMU和TLB
    FMX的综合评价
    Windows核心编程学习九:利用内核对象进行线程同步
    QListWidget特别简单,但有两种添加item的方式
  • 原文地址:https://www.cnblogs.com/Jolivan/p/8428314.html
Copyright © 2011-2022 走看看