• Java 多线程分析 (四) ---高并发基础知识)


    1.原子量级操作(读、++操作、写分为最小的操作量单位,在多线程中进行原子量级编程保证程序可见性(有序性人为规定))

    由于某些问题在多线程条件下:产生了竞争的问题,(例如:在多线程中一个简单的计数器增加)如果在程序中不采用同步的机制,那么在程序的运行结果中,多个线程在访问此资源时候,产生Racing。解决这个问题,采用某种方式阻止其他线程在该线程使用该变量的时候使用该变量

    采用原子级操作:1.采用加锁的机制(最好的操作)2.Java.concurrent.atomic包包含一些原子量操作:AtomicLong类,虽然采用Atomic包中原子量操作,在这些个简单的可以保证结果运行的正确性,但是也有其缺陷型:

    I.当多线程中,如果从一个无状态的类中添加一个状态,此时该类由线程的安全性对象管理,采用Atomic包(叫做线程安全方式)计算,得到一个好的结果

    II.当状态由一个增加到多个状态,并且这多个变量之间不是相互独立,有一定的联系,并且同时对一个资源进行访问,此时不要用atomic类,采用锁的概念

    2.Java高并发编程:(只是简单知识的理解,jdk1.5新版本中原子量,线程安全,)在图像处理和服务器端(数据挖掘)的编程,CPU主频4GHZ

    I.CPU并行(网络编程,服务器端使用),HTTP服务器

    1.同步与异步:同步调用过程调用之后会有等待响应再返回(synchronized)中之前见过同步机制,异步指在调用之后直接返回,在执行其他事情在其他线程中

     

     1.并行 Vs 并发:单个CPU不肯能并行(采用并发),多个CPU可能并行运行

    2.临界区:

    3.阻塞Vs 非阻塞 

    阻塞代价:花8万多个时钟处理某件事情(有肯能出现死锁情况)

    死锁:(阻塞)相当于静态问题,CPU占用率为0;

    活锁:(电梯遇人,两个人不停遇面),CPU有占用率,资源多个线程解锁和占用

    Starvation:本身优先级太低,数据竞争中被高优先级线程使用,自己无法得到

    阻塞是一种悲观操作,认为资源只能被一个人占用(进入临界区),非阻塞:一种积极操作,遵守宽进严出。

    无锁必须无障碍,无锁在竞争中有一个线程能够胜出,无等待必须无锁

    5.并行2个定律:

    在程序中F很大,加CPU个数影响不是很大

     

    GUustafston定律:只是F串行比例小的条件下,才有高的性能

    综上所述:只有调节程序中串行话的比例,同时处理CPU个数才能让程序执行较好

  • 相关阅读:
    2
    作业5
    实验十
    作业 5 指针应用
    九九乘法表
    实验七(课堂练习)
    实验六 数组 (2)
    实验六 数组
    课堂实验5(求从m到n之间(包括m和n)所有素数的和)
    课堂实验5-2
  • 原文地址:https://www.cnblogs.com/woainifanfan/p/5786813.html
Copyright © 2020-2023  润新知