当前位置: 首页 > news >正文

Java并发编程概述

在学习并发编程之前,我们需要稍微回顾以下线程相关知识:

线程基本概念

程序:静态的代码,存储在硬盘中

进程:运行中的程序,被加载在内存中,是操作系统分配内存的基本单位

线程:是cpu执行的单位,进程可再分为线程,是程序处理的基本最小单位

线程的创建方式:

类 继承 Thread 重写run() 创建类的对象

实现Runnable接口 重写run() 任务 new Thread(任务)

实现Callable接口 重写call() 有返回值,可以抛出异常

创建线程:

多线程

什么是多线程?

一个程序中,支持同时运行多个线程。

多线程的优点:提升程序响应速度,提升硬件(cpu)利用率

多线程问题:线程过多占内存,cpu需要处理线程,需要性能能够满足;多个线程访问同一个资源

并发编程


什么是并发编程?

并行:同一个时间节点上,多个线程同时发生(真正意义上的同时)

并发:一个时间段内,不同进程交替访问同一个资源;

并发编程:在例如买票,抢购,秒杀等场景下,有大量的请求访问统一资源。会出现线程安全的问题,所以需要通过编程来控制解决让多个线程一次访问资源,解决线程安全问题,称为并发编程。

并发编程的根本原因

1.多核cpu

从而让我们可以实现多个线程同时进行

2.JMM java内存模型

java内存模型,是java虚拟机规范的一种工作模式

将内存范围主内存和工作内存。

变量数据存储在主内存中,线程在操作变量时,会将主内存中的数据复制一份到工作内存,在工作内存中操作完成后,在写回到主内存中。

是仿照于cpu、内存、硬盘的关系

多线程三个性质

1.有序性是什么?

有序性指的是程序按照代码的先后顺序执行

为了优化性能,有时候会改变程序中语句的先后顺序。cpu 的读等待同时指令执行是 cpu 乱序执行的根源。读指令的同时可以同时执行不影响的其他指令。

2.可见性是什么?

一个线程对共享变量的修改,另外一个线程能够立刻看到,我们称为可见性。

3.原子性是什么?

原子性(Atomic)就是不可分割的意思,是指在进行一系列操作的时候这些操作要么全部执行要么全部不执行,不存在只执行一部分的情况

原子操作的不可分割有两层含义:
1.访问(读、写)某个共享变量的操作从其他线程来看,该操作要么已经执行要么尚未发生,即其他线程看不到当前操作中的中间结果
2.访问同一组共享变量的原子操作时不能相交错的。如现实生活中从ATM机取款。

http://www.lryc.cn/news/355.html

相关文章:

  • Java常见数据结构的排序与遍历(包括数组,List,Map)
  • 数据结构|绪论
  • 内网渗透(十二)之内网信息收集-内网端口扫描和发现
  • RabbitMq相关面试题
  • 树莓派开机自启动Python脚本或者应用程序
  • 全国青少年编程等级考试scratch四级真题2022年9月(含题库答题软件账号)
  • NodeJS与npm版本不一致时降级npm的方法
  • 《C++ Primer Plus》第16章:string类和标准模板库(8)
  • Linux安装达梦8数据库
  • [数据库]初识数据库
  • Redis的缓存雪崩、击穿、穿透和解决方案
  • 52000000
  • 内网资源探测
  • Java后端内部面试题(前一部分)
  • 关于如何抄引擎源码
  • 差分模拟信号转单端输出电路设计
  • Java中的clone方法
  • 数据结构—二叉树、完全二叉树的性质
  • JDBC编程复习
  • c++基础入门二
  • 企业数字化转型的产品设计思路
  • Linux日志分析常用命令
  • Allegro如何使用Snake命令走蛇形线操作指导
  • 在 Eclipse 中创建 Maven 项目
  • flex 布局相关属性的使用
  • 【C++】类和对象(第一篇)
  • springboot 接入websocket实现定时推送消息到客户端
  • 虚拟机磁盘重新分区增加Docker磁盘空间
  • Java开发学习(四十八)----MyBatisPlus删除语句之逻辑删除
  • RabbitMq