搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
笔触狂放9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
git clone报错:SSL certificate problem: unable to get local issuer certificate_git clone ssl certificate problem: unable to get l
2
排序——堆排序和TopK_top k堆排序
3
Selenium实现滑动滑块验证码验证_python selenium 滑动验证
4
MySQL常用判断函数总结!!看你都用过没_mysql 判断
5
idea为springboot项目配置热部署
6
华为Java社招面试(已拿到offer)
7
谷歌中国在服务器撤离中国以后欲卷土重来?_谷歌不愿意把服务器放中国吗
8
最简单的python爬虫案例,适合入门学习
9
tensorRT 自定义算子plugin的实现
10
AnythingLLM:私人 ChatGPT,构建专属知识库,本地代码库问答助手_anythingllm no embedding model was set.
当前位置:
article
> 正文
Java高并发程序设计(一)-前言_java高并发程序涉及 电子版
作者:笔触狂放9 | 2024-06-23 10:39:04
赞
踩
java高并发程序涉及 电子版
一,为什么需要并行?
(1)业务要求:
并行计算还出于业务模型的需要
– 并不是为了提高系统性能,而是确实在业务上需要多个执行单元。
– 比如HTTP服务器,为每一个Socket连接新建一个处理线程
– 让不同线程承担不同的业务工作
– 简化任务调度
(2)性能
需要并行的原因和说法:
Linus Torvalds :并行计算只有在图像处理和服务端编程2个领域可以使用,并且它在这2个
领域确实有着大量广泛的使用。但是在其它任何地方,并行计算毫无建树!
摩尔定律的失效
– 预计18个月会将芯片的性能提高一倍
– Intel CEO Barret单膝下跪对取消4GHz感到抱歉
• 在2004年秋季,Intel宣布彻底取消4GHz计划
– 虽然现在已经有了4GHZ的芯片,但频率极限已经逼近
顶级计算机科学家唐纳德·尔文·克努斯
– 在我看来,这种现象(并发)或多或少是由于硬件设计者
– 已经无计可施了导致的,他们将摩尔定律失效的责任
– 推脱给软件开发者。
二,几个重要的概念
同步(synchronous)和异步(asynchronous)
并发(Concurrency)和并行(Parallelism)
临界区 :
用来表示一种公共资源或者说是共享数据,可以被多个线程使用。但是每一次,只能有一个线程
使用它,一旦临界区资源被占用,其他线程要想使用这个资源,就必须等待。
阻塞(Blocking)和非阻塞(Non-Blocking)
阻塞和非阻塞通常用来形容多线程间的相互影响。比如一个线程占用了临界区资源,那么其它所有需要
这个资源的线程就必须在这个临界区中进行等待,等待会导致线程挂起。这种情况就是阻塞。此时,如
果占用资源的线程一直不愿意释放资源,那么其它所有阻塞在这个临界区上的线程都不能工作。
– 非阻塞允许多个线程同时进入临界区
锁(Deadlock)、饥饿(Starvation)和活锁(Livelock)
锁:如A,B,C,D四辆车,每辆车都占用一条道路的资源,互相等待其它车辆释放资源,形成死锁。
活锁:如电梯遇人,A要从电梯出去,B要进来电梯,两人相互阻挡,并且同时在左右避让时(释放资源),又阻挡到对方。
并行的级别
阻塞
– 当一个线程进入临界区后,其他线程必须等待
无障碍(Obstruction-Free)
– 无障碍是一种最弱的非阻塞调度
– 自由出入临界区
– 无竞争时,有限步内完成操作
– 有竞争时,回滚数据
无锁(Lock-Free)
– 是无障碍的
– 保证有一个线程可以胜出
while (!atomicVar.compareAndSet(localVar, localVar+1))
{
localVar = atomicVar.get();
}
无等待(Wait-Free)
– 无锁的
– 要求所有的线程都必须在有限步内完成
– 无饥饿的
三,有关并行的两个重要定律
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/笔触狂放9/article/detail/749410
推荐阅读
article
Java
桥接
模式
(
Bridge
Pattern
)是
设计
模式
中的一种结构型
设计
模式
,
桥接
模式
的核心思...
/ 实现化角色(Implementor)@OverrideSystem.out.println("绘制圆形...");J...
赞
踩
article
Java 设计
模式
——
单例
模式
_
java
单例
...
本文介绍了
单例
模式
的相关知识。_
java
单例
java
单例
...
赞
踩
article
Java设计
模式
-
单例
模式
详解(
Singleton
Pattern)_
singleton
patte...
一、
单例
设计
模式
概述1、
单例
模式
简介
单例
模式
(
Singleton
Pattern)是Java中最常见最简单的设计
模式
之一...
赞
踩
article
【
Java
】
Java
GUI
制作Windows桌面
程序
,利用
windowbuilder
生成界面,
使用
...
目录1.
GUI
插件1.1 下载
GUI
绘制插件1.
GUI
插件
使用
IDEA的朋友们,可能比较头疼了,为什么这里要去下载ecl...
赞
踩
article
Windows
Java
Java
FX IntelliJ IDEA 开发环境搭建 创建工程 编译
运行
...
Java
FX 主要致力于富客户端开发,以弥补 swing 的缺陷,主要提供图形库与 media 库,支持 audio,v...
赞
踩
article
java
客户端
开发
_作为
Java
程序员
,这九个最具有潜力的
发展
方向
,你都了解吗?......
Java
语言是一门随时代迅速
发展
的计算机语言程序,其深刻展示了程序编写的精髓,再加上其简明严谨的结构及简洁的语法编写为其...
赞
踩
article
JAVA 开发pc端桌面软件 基于
idea
+
java
fx+
maven
+
springboot
_
java
...
前言:本文只介绍IntelliJ IDEA环境下如何搭建
java
fx+
maven
+spring的开发环境和一些必要的知识...
赞
踩
article
java
数组
字符串
编程_
Java
语言基础知识之
字符串
数组
...
Java
语言基础知识之
字符串
数组
java
语言中,
数组
是一种最简单的复合数据类型。
数组
是有序数据的集合,
数组
中的每个元素具...
赞
踩
article
java
-
字符串
数组
转化为
int
数组
_
java
字符串
转
int
数组
...
public class MyDemo { public static void main(String[] args)...
赞
踩
article
Java
:
数组
与
字符串
_
java
字符串
数组
...
这一章应该会有小伙伴在学习其他编程语言时候,可能会涉及到,因而会很熟悉,没有学过的,让我们一起进入这章的知识海洋吧!我们...
赞
踩
article
java
字符
数组
对象
_
java
-将
对象
数组
转换为
字符
串
数组
...
我有一个包含商品名称,价格等数据的商品类,当卖家想出售商品时,我将其添加到商品类中,如下所示:public void s...
赞
踩
article
住宿
管理系统
java
+
jsp
+
web
三件套...
写了将近3周,人都写麻了记录下,第一个 ss 代码仅仅使用了作为前端UI框架,因为另一个项目用的也是他,感觉一些组件比较...
赞
踩
article
java
安装
和
环境
配置
(202
4
-
4
月保姆级最新版)_
java
安装
教程
及
环境
配置
方法...
java
安装
教程
及
环境
配置
方法 ...
赞
踩
article
【
JAVA
SE】
类
和
对象
...
在我们之前的学习过程中,在写代码的时候都需要去考虑一步一步的逻辑过程,也就是面向过程去编写代码。而
JAVA
的主要思想是面...
赞
踩
article
java
-No
route
to
host
解决办法_
java
no
route
to
host
...
出现No
route
to
host
的时候,有如下几种可能:1、对方的域名确实不通2、本机自己开了防火墙3、本机的et...
赞
踩
article
java
泛型
数组
初始化_Java
泛型
泛型
数组
...
直接创建
泛型
数组
不能通过编译,而转型对象
数组
通过编译但是不能在JVM运行 public class ArrayOfGen...
赞
踩
article
JAVA
---
int
数组声明与
初始化
_
java
int
数组
初始化
...
JAVA
---
int
数组声明与
初始化
JAVA
中
int
数组声明与
初始化
:有3种正确方式同时进行声明与
初始化
;分别为new ...
赞
踩
article
java
如何
定义
数组
和
初始化
_
java
中
数组
的
定义
和
初始化
...
1.
数组
的
定义
:
数组
可以分为一维
数组
,二维
数组
,多维
数组
。一维
数组
的
定义
有以下两种方式:type[ ] arr_name...
赞
踩
article
【
Java
--
数组
的
动态
初始化
和静态
初始化
】_
java
数组
动态
初始化
和静态
初始化
...
Java
数组
的
初始化
有两种方式:静态
初始化
和
动态
动态
初始化
。_
java
数组
动态
初始化
和静态
初始化
java
数组
动态
初始化
...
赞
踩
article
【
JAVA
|
数组
】
数组
定义与使用、常见
的
Arrays
类介绍_
java
的
arrays
...
内存在连续存储
的
一段空间,相同类型数据
的
集合。_
java
的
arrays
java
的
arrays
...
赞
踩
相关标签
java
桥接模式
设计模式
单例模式
单例模式 懒汉模式 恶汉模式 模式设计
Java GUI
exe4j
Inno Setup
桌面程序
jafafx
jmods
jlink
jpackage
java 客户端开发
intellij-idea
spring boot
maven
javafx
java 数组 字符串 编程
数据结构
开发语言
jvm