Java并发基础概念

时间:2022-09-25 08:10:53

Java并发基础概念

线程和进程

线程和进程都能实现并发,在java编程领域,线程是实现并发的主要方式

每个进程都有独立的运行环境,内存空间。进程的通信需要通过,pipline或者socket

线程共享进程的运行环境,创建线程更加轻量级

线程

创建线程的方式

  1. 直接创建和管理Thread对象,在需要异步任务的时候创建Thread
  2. 使用抽象线程管理器,把task交给executor执行

定义和启动线程

Thread th = new Thread();
th.start();

暂停线程

Thread.sleep(1000)

中断

中断线程自己实现,可以接收或者不接受中断
查询线程的是否中断了
Thread.interrupted()
中断一个线程
thread.interrupt()

Join

等待线程结束

t.join() 当前线程等待t线程结束再执行后面的操作

同步

1.线程干涉

多个线程并发访问同一个资源,会导致结果不一致不可预测

2.内存可见性

多个线程并发,一个线程修改一个变量的时候,其他线程不一定能读到修改后的值

3.同步方法

同步方法和同步代码块

同步方法或者同步代码块的代码,可以防止线程干扰和保证内存可见性

volatile

保证变量的可见性,每个线程都能及时获取修改后的值

活性

1.死锁

场景

  • 线程1持有锁A ,请求锁B
  • 线程2持有锁B,请求锁A

2.饥饿

共享资源被其他线程长时间占用,导致其他线程不能执行

wait & notifiy

类之间的进度同步

如果一个线程依赖于其他线程的进度,可以使用wait暂停线程

条件达成后其他线程调用notify使wait状态的线程恢复执行

不可变对象

一个对象一旦被创建之后不可更改,即为不可变对象

不可变对象是线程安全的,因为数据都是只读的

线程安全:可以被并发访问

高级并发对象

简化编写并发程序的难度

  • Lock对象
  • Executor
  • 并发容器
  • 原子类
  • ThreadLocalRandom

Lock对象

比隐式锁提供了额外的功能

Executor 框架

ExecutorService 管理任务和生命周期

ScheduledExecutorService 周期性的执行任务,(定时任务)

Thread Pool Executor框架实现了线程池,固定数量的线程池,单线程池等

并发容器

并发环境下的容器类

原子类

为基本类型提供了常用的原子操作

Java并发基础概念的更多相关文章

  1. Java 并发基础

    Java 并发基础 标签 : Java基础 线程简述 线程是进程的执行部分,用来完成一定的任务; 线程拥有自己的堆栈,程序计数器和自己的局部变量,但不拥有系统资源, 他与其他线程共享父进程的共享资源及 ...

  2. Java多线程--基础概念

    Java多线程--基础概念 必须知道的几个概念 同步和异步 同步方法一旦开始,调用者必须等到方法调用返回后,才能执行后续行为:而异步方法调用,一旦开始,方法调用就立即返回,调用者不用等待就可以继续执行 ...

  3. java并发基础(二)

    <java并发编程实战>终于读完4-7章了,感触很深,但是有些东西还没有吃透,先把已经理解的整理一下.java并发基础(一)是对前3章的总结.这里总结一下第4.5章的东西. 一.java监 ...

  4. java并发基础(五)--- 线程池的使用

    第8章介绍的是线程池的使用,直接进入正题. 一.线程饥饿死锁和饱和策略 1.线程饥饿死锁 在线程池中,如果任务依赖其他任务,那么可能产生死锁.举个极端的例子,在单线程的Executor中,如果一个任务 ...

  5. java并发基础及原理

    java并发基础知识导图   一 java线程用法 1.1 线程使用方式 1.1.1 继承Thread类 继承Thread类的方式,无返回值,且由于java不支持多继承,继承Thread类后,无法再继 ...

  6. 【搞定 Java 并发面试】面试最常问的 Java 并发基础常见面试题总结!

    本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.欢迎 Sta ...

  7. java并发基础(一)

    最近在看<java并发编程实战>,希望自己有毅力把它读完. 线程本身有很多优势,比如可以发挥多处理器的强大能力.建模更加简单.简化异步事件的处理.使用户界面的相应更加灵敏,但是更多的需要程 ...

  8. 【Java并发基础】利用面向对象的思想写好并发程序

    前言 下面简单总结学习Java并发的笔记,关于如何利用面向对象思想写好并发程序的建议.面向对象的思想和并发编程属于两个领域,但是在Java中这两个领域却可以融合到一起.在Java语言中,面向对象编程的 ...

  9. Java并发基础框架AbstractQueuedSynchronizer初探&lpar;ReentrantLock的实现分析&rpar;

    AbstractQueuedSynchronizer是实现Java并发类库的一个基础框架,Java中的各种锁(RenentrantLock, ReentrantReadWriteLock)以及同步工具 ...

随机推荐

  1. BZOJ3873 &colon; &lbrack;Ahoi2014&rsqb;拼图

    如果答案在某个碎片内部,那么直接悬线法解决,时间复杂度$O(n\sum)$. 如果$n$比较大,那么$\sum$比较小. 求出每个点向上能延伸的长度,枚举每个点向上这条线段作为短板. 算出完全可选的碎 ...

  2. java并发编程实践笔记

    文章转自:http://kenwublog.com/java-concurrency-in-practise-note 1, 保证线程安全的三种方法 :a, 不要跨线程访问共享变量b, 使共享变量是 ...

  3. HTTP请求中的User-Agent 判断浏览器类型的各种方法 网络爬虫的请求标示

    我们知道,当用户发送一个http请求的时候,浏览的的版本信息也包含在了http请求信息中: 如上图所示,请求 google plus 请求头就包含了用户的浏览器信息: User-Agent:Mozil ...

  4. 【转】Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP&sol;IP 连接失败

    错误原因如下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot ...

  5. &lbrack;2015编程之美&rsqb; 第一场C

    题目3 : 质数相关 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 两个数a和 b (a<b)被称为质数相关,是指a × p = b,这里p是一个质数.一个集合S被 ...

  6. iOS开发实现登陆

    Assumption假设:iOS端加载Web页,然后用户输入用户名密码登陆,WebServer会把用户登陆信息记载在Cookie.那么iOS客户端如何取到Cookie中的登陆信息. 客户端监听 NSH ...

  7. 【转】虚拟机下安装小红帽Linux9&period;0图解

    http://blog.163.com/ly676830315@126/blog/static/10173372220119148583539/

  8. 《编程珠玑&lpar;第2版&rpar;》【PDF】下载

    <编程珠玑(第2版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382225 内容简介 书的内容围绕程序设计人员面对的一系列实 ...

  9. SQL Server统计数据库中表个数、视图个数、存储过程个数

    表个数 SELECT count(*) FROM sys.objects WHERE type='U' 视图个数 SELECT count(*) FROM sys.objects WHERE type ...

  10. 图像的下采样Subsampling 与 上采样 Upsampling

     I.目的 缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的: 1.使得图像符合显示区域的大小: 2.生成对应图像的缩略图. 放大图像(或称为上采样(ups ...