java tcp高并发线程_Java 多线程分析 (四) ---高并发基础知识)

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

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

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

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

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

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

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

59dd46f7185ccaf6fdc46191624f98ba.png

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

e10c4e685e2ce4580f0330e1ddde8282.png

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

c83ece2bc3f242a997df7204cd4691ce.png

2.临界区:

51765bb43a446b37e798cfa906645994.png

3.阻塞Vs 非阻塞

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

2d3da02130dae4ebe5a347e3c7a2cb26.png

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

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

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

a8dec7b5635cf6a60dda6b0f0b24421b.png

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

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

241e8688a08f4910d1208f460ab4db0a.png

98a385e5518b4e0d7ef0f71b1f50b4b5.png

5.并行2个定律:

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

5f080611a611c1509fbd48f0ee279672.png

e069ee197dbe2c96d52266ca48284386.png

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值