java并发编程的学习 ——java并发编程具体在哪些领域和公司用到比较多? web开发要用到吗?

本文探讨了Java并发编程在多核CPU优化、特定业务场景的应用,以及如何减少上下文切换、避免死锁等问题。通过学习并发工具类、源码分析,结合实例,阐述了提高并发性能的方法,包括无锁并发、CAS算法和协程。同时,介绍了资源限制下的并发挑战及解决方案。
摘要由CSDN通过智能技术生成

如何学习好java并发编程

是不是总有一种感觉,在项目开发遇到问题时,打比方在了解一些并发工具类的使用时,会查阅相关资料,但过段时间又忘了,总感觉我已经学习了好多知识,但还是搞不懂,有时候好不容易解决这个问题,但又不知道这样做是不是对的或者是最优方案,那怎么样才能学习好并发编程? 其实在之前我也遇到过这样的问题,其实就2点,一个是从现象看本质,深入源码学习,二个是对整体并发工具类有个大体了解,最起码能知道有哪些工具类,在解决实际问题中,他们的优缺点是什么。有些人会问,那我已经知道这些并发工具类的使用用途,源码也看了,但他们为什么这样设计,这样设计有什么好处,我只能说这样的问题只有问并发编程大师Doug Lea了。附带一张java并发编程图谱
在这里插入图片描述

使用并发的原因

多核的CPU的背景下,催生了并发编程的趋势,通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升。
在特殊的业务场景下先天的就适合于并发编程。 比如在图像处理领域,一张1024X768像素的图片,包含达到78万6千多个像素。即时将所有的像素遍历一边都需要很长的时间, 面对如此复杂的计算量就需要充分利用多核的计算的能力。又比如当我们在网上购物时,为了提升响应速度,需要拆分,减库存, 生成订单等等这些操作,就可以进行拆分利用多线程的技术完成。 面对复杂业务模型,并行程序会比串行程序更适应业务需求,而并发编程更能吻合这种业务拆分。
Java线程的生命周期

  1. java线程的生命周期如下图所属在这里插入图片描述
    1、上下文切换
    多线程的支持:CPU通过给每个线程分配CPU时间片来实现这个机制。

上下文切换:CPU通过分配时间片算法循环执行任务时,任务切换前会保存前一个任务的状态,以便切回任务,任务从保存到再次加载的过程就是一次上下文切换。上下文切换会影响多线程的执行速度。

1.1多线程一定快吗?

代码见part01中ConcurrencyTest类。

package io.ilss.concurrency.part01;

/**
 * className ConcurrencyTest
 * description ConcurrencyTest
 *
 * @author feng
 * @version 1.0
 * @date 2019-01-21 12:47
 */
public class ConcurrencyTest {
   
    private static final long count = 100001L;

    public static void main(String[] args) throws InterruptedException {
   
        concurrency();
        serial();
    }

    private static void concurrency() throws InterruptedException {
   
        long start = System.currentTimeMillis();
        Thread thread = new Thread(new Runnable() {
   
            public void run() {
   
                long a = 0;
                for (long i = 0; i < count; i++) <
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值