Java多线程从基本概念到精通大神,大佬给我们铺平学习之路

news2024/11/16 21:35:38

Java 提供了多线程编程的内置支持,让我们可以轻松开发多线程应用。
Java 中我们最为熟悉的线程就是 main 线程——主线程。
一个进程可以并发多个线程,每条线程并行执行不同的任务。线程是进程的基本单位,是一个单一顺序的控制流,一个进程一直运行,直到所有的“非守护线程”都结束运行后才能结束。Java 中常见的守护线程有:垃圾回收线程、

这里简要述说以下并发和并行的区别。
并发:同一时间段内有多个任务在运行
并行:同一时间点上有多个任务同时在运行

多线程可以帮助我们高效地执行任务,合理利用 CPU 资源,充分地发挥多核 CPU 的性能。但是多线程也并不总是能够让程序高效运行的,多线程切换带来的开销、线程死锁、线程异常等等问题,都会使得多线程开发较单线程开发更麻烦。因此,有必要学习 Java 多线程的相关知识,从而提高开发效率。

今天小编就给大家带来这本《Java多线程编程核心技术》,涵盖的知识点一目了然,希望能以此书为你们拓展出更深入,更全面的线程思路,话不多说了,给大家展示内容吧!

读者对象

本书适合所有Java程序员阅读,尤其适合以下读者:

  1. Java多线程开发者
  2. Java并发开发者
  3. 系统架构师
  4. 大数据开发者
  5. 其他对多线程技术感兴趣的人员

目录大纲

第1章Java多线程技能

本章中主要介绍Thread类中的核心方法。Thread类的核心方法较多,读者应该着重掌握如下关键技术点:

  • 线程的启动
  • 如何使线程暂停
  • 如何使线程停止
  • 线程的优先级
  • 线程安全相关的问题

上面的5点也是本章学习的重点与思路,掌握这些内容是学习Java多线程的必经之路

第2章对象及变量的并发访问

本章主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题。多线程中的同步问题是学习多线程的重中之重,这个技术在其他的编程语言中也涉及,如C++或C#。

本章应该着重掌握如下技术点:

  • synchronized对象监视器为Object时的使用
  • synchronized对象监视器为Class时的使用
  • 非线程安全是如何出现的
  • 关键字volatile的主要作用
  • 关键字volatile与synchronized的区别及使用情况

     

     

第3章线程间通信

线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体。线程间的通信就是成为整体的必用方案之一,可以说,使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时还会使程序员对各线程任务在处理的过程中进行有效的把控与监督。在本章中需要着重掌握的技术点如下:

  • 使用wait/notify实现线程间的通信
  • 生产者/消费者模式的实现
  • 方法join的使用
  • ThreadLocal类的使用

     

     

第4章Lock的使用

本章将要介绍使用Java5中Lock对象也能实现同步的效果,而且在使用上更加方便。

本章着重掌握如下2个知识点:

  • ReentrantLock类的使用
  • ReentrantReadWriteLock类的使用

     

第5章定时器Timer

定时/计划功能在移动开发领域使用较多,比如Android技术。定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联的。在本章节着重掌握如下技术点:

  • 如何实现指定时间执行任务
  • 如何实现按指定周期执行任务

     

第6章单例模式与多线程

本章的知识点非常重要,通过单例模式与多线程技术相结合,在这个过程中能发现很多以前从未考虑过的情况,一些不良的程序设计方法如果应用在商业项目中,将会遇到非常大的麻烦。本章的案例也将充分说明,线程与某些技术相结合时要考虑的事情有很多。在学习本章时只需要考虑一件事情,那就是:如何使单例模式遇到多线程是安全的、正确的。

在标准的23个设计模式中,单例设计模式在应用中是比较常见的。但在常规的该模式教学资料介绍中,多数并没有结合多线程技术作为参考,这就造成在使用多线程技术的单例模式时会出现一些意想不到的情况,这样的代码如果在生产环境中出现异常,有可能造成灾难性的后果。本章将介绍单例模式结合多线程技术在使用时的相关知识。

第7章拾遗增补

本章是本书的最后一章,在本章中将对前面几章遗漏的知识点进行补充,丰富多线程案例的完整性。在开发此类应用中,这些案例能起到优化性能的作用,至少在遇到某些情况时会回想起这些案例的初衷与解决办法。

本章应该掌握如下知识点:

  • 线程组的使用
  • 如何切换线程状态
  • SimplcDataFormat类与多线程的解决办法
  • 如何处理线程的异常

     

     

接下来是小编为大家整理的一些2020高频并发编程面试题库,希望能对各位大哥们起点作用!

Synchronized相关问题

  1. Synchronized用过吗 ,其原理是什么?
  2. 你刚才提到获取对象的锁 ,这个“ 锁 ”到底是什么?如何确定对象的锁 ?
  3. 什么是可重入性,为什么说Synchronized是可重入锁?
  4. JVM对Java的原生锁做了哪些优化?
  5. 为什么说Synchronized是非公平锁?
  6. 什么是锁消除和锁粗化?
  7. 为什么说Synchronized是一个悲观锁﹖乐观锁的实现原理又是什么?什么是CAS,它有什么特性?
  8. 乐观锁一定就是好的吗?

可重入锁ReentrantLock及其他显式锁相关问题

  1. 跟Synchronized相比,可重入锁ReentrantLock其实现原理有什么不同?
  2. 那么请谈谈AQS框架是怎么回事儿?
  3. 请尽可能详尽地对比下Synchronized和ReentrantLock的异同?
  4. ReentrantLock是如何实现可重入性的?
  5. 除了ReetrantLock,你还接触过JUC中的哪些并发工具?
  6. 请谈谈ReadWriteLock和StampedLock?
  7. 如何让Java的线程彼此同步?你了解过哪些同步器?请分别介绍下。
  8. CyclicBarrier和CountDownLatch看起来很相似,请对比下呢?

Java线程池相关问题

  1. Java中的线程池是如何实现的?
  2. 创建线程池的几个核心构造参数?
  3. 线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好了吗?
  4. 既然提到可以通过配置不同参数创建出不同的线程池,那么
  5. Java中默认实现好的线程池又有哪些呢?﹖请比较它们的异同。
  6. 如何在Java线程池中提交线程?

Java内存模型相关问题

  1. 什么是Java的内存模型,Java中各个线程是怎么彼此看到对方的变量的?
  2. 请谈谈volatile有什么特点,为什么它能保证变量对所有线程的可见性?
  3. 既然volatile能够保证线程间的变量可见性,是不是就意味着基于volatile变量的运算就是并发安全的?

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常见的限流算法与实现

限流的实现 常见的限流算法: 限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。 常见的限流算法有三种: 计数器限流(固定窗口) 原理: 时间线划分为多…

Dubbo3.0入门-Java版

Dubbo 简介 ​ Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服…

【软件测试】测试人终将迎来末路?测试人的我35岁就坐等失业?

目录:导读一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)一句话萦绕在耳畔测试乃至测开…

02 LaTex之小tips

1.运行 2.头+尾 \documentclass[11pt]{article}\usepackage{algorithm, algpseudocode} \usepackage{amsmath,amssymb,amsthm} \usepackage{mathrsfs}% huaxie zimu \textwidth 16cm\textheight 22cm\oddsidemargin0cm\evensidemargin\oddsidemargin\usepackage{un…

Java#17(static)

目录 一.静态关键字static 1.静态变量(被static修饰的成员变量) 2.静态方法(被static修饰的成员方法) 扩展:工具类的简单使用 三.static关键字的注意事项 一.静态关键字static 1.静态变量(被static修饰的成员变量) 特点: (1)被该类的所有对象共享 (2)不属于对象,属于类 (3)…

版权交易平台app开发,构建版权元宇宙生态

近年来在国家的大力宣传推广下,人们在版权方面的保护意识逐步提高,大力发展版权交易市场,不仅是响应国家号召的体现,更是保护公民合法权益的重要举措。版权交易平台app的开发为创业者提供了一个全新投资方向,同时app还…

带你认识工厂类设计模式——简单工厂工厂方法抽象工厂简单抽象工厂反射简单抽象工厂

工厂类设计模式简单工厂模式简单工厂模式类图简单工厂实现代码实现小结工厂方法模式工厂方法模式类图工厂方法模式代码实现小结抽象工厂模式抽象工厂模式类图抽象工厂模式代码实现小结:用简单工厂改进抽象工厂模式简单抽象工厂模式类图简单抽象工厂模式代码实现小结…

高项 人力资源管理论文

4个过程: 人力资源管理简单可以归纳为以下四点:明确需要的人((制定人力资源管理计划),找到合适的人(组建项目团队),用好身边的人(建设项目团队)&…

宝塔面板一键部署芸众商城智慧商业系统 打造多终端直播分销商城

芸众商城社交电商系统前端基于vue开发,后端基于laravel开发,免费版本全开源,支持商用,可同时支持多端口部署运行;本教程将使用宝塔面板一键部署的方式搭建芸众商城系统,使用宝塔面板搭建,大大提…

ShardingSphere实现数据库读写分离,主从库分离,docker详细教程

一.什么是 ShardingSphere 引用官方的话: Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。 Apache ShardingSphere 设计哲学为 Dat…

计算机毕业设计ssm+vue基本微信小程序的购物商城系统

项目介绍 随着互联网的趋势的到来,各行各业都在考虑利用互联网将自己的信息推广出去,最好方式就是建立自己的平台信息,并对其进行管理,随着现在智能手机的普及,人们对于智能手机里面的应用购物平台小程序也在不断的使用,本文首先分析了购物平台小程序应用程序的需求,从系统开发…

希望所有计算机专业学生都去这些网站刷题

LeetCode 力扣,强推!力扣虐我千百遍,我待力扣如初恋! 从现在开始,每天一道力扣算法题,坚持几个月的时间,你会感谢我的(傲娇脸) 我刚开始刷算法题的时候,就选…

[vue] nodejs安装教程

介绍:nodejs 是一个开源的跨平台的JavaScript运行时环境,因此在运行前端项目时是需要安装配置相应的环境变量。 一、下载nodejs 二、安装nodejs 三、配置nodejs的环境变量 四、验证配置的nodejs 一、下载nodejs nodejs下载官网地址:下载 …

【C++基础】this指针

this指针 this指针作用: c的数据和操作也是分开存储,并且每一个非内联成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用同一块代码。所以,用this指针表明哪个对象调用自己。 定义: this指针指向被调用的…

Day08--自定义组件的behaviors(等用于vue中的mixins)

1.啥子是behaviors呢? ************************************ ************************************ ************************************ ************************************ ************************************ ************************************ 2…

基地树洞 | 自动化小系列之番外篇

程序员或许只是一份工作,编码或许是为了生存,但是归根结底,我们为什么要写代码? 有没有⼀种可能,在我们的日常工作生活中,代码的初衷就是为了提升工作作效率,减少不必要的重复! 今…

钱包追踪分析的 3 个使用案例

Nov. 2022, Vincy Data Source: Footprint Analytics - Wallet Profile 钱包跟踪分析让分析师了解区块链用户的链上活动和持仓情况。 在本文中,我们将介绍钱包分析器发现的一些指标。 Footprint Analytics - Wallet Profile Footprint Analytics 从中挑选相对比较…

JVM 核心技术 - 知识点整理

JVM 核心技术 JAVA 前言 JDK (Java Development Kit) JRE 开发工具JRE(Java Runtime Environment) JVM (Java Virtual Machine) 类库一次编译,到处执行的原理: java字节码可以在有JVM的环境中运行,不关心操作系统的版本,减少…

Spring Cloud版本,Spring Boot版本详细对应关系

目录 一、官网(网页版) 二、官网(API接口) 三、根据历史官方文档梳理、保存的表格 四、官方(wiki)Spring Cloud的各个组件与Spring Boot支持、对应关系 有多个方式可以查看Spring Boot和Spring Cloud版本…

嵌入式分享合集107

一、Wi-Fi HaLow Wi-Fi HaLow很快就会出现在我们日常生活中的智慧门锁、安保摄影机、可穿戴设备和无线传感器网络上。什么是Wi-Fi HaLow?与传统的Wi-Fi(4/5/6)有何不同?究竟是什么让Wi-Fi HaLow成为物联网的理想协议?…