• 【Java并发专题之四】Java并发编程实现


      本章做一下总览各种并发的实现方式,传统方式比较常见,在大并发场景下一般会使用JUC并发包,下面列了一张juc包概览图,每一类会在后面文章中详细介绍原理和使用。

    一、传统的java线程并发支持

    1、线程同步使用synchronized

    2、线程通信使用wait、notify、notifyAll、join、yield、sleep
    3、变量内存可见使用volate
    4、ThreadLocal封装非线程安全类

    ThreadLocal是一种把变量放到线程本地的方式来实现线程同步的。比如:SimpleDateFormat不是一个线程安全的类,可以使用ThreadLocal实现同步,如下:

    public class ThreadLocalTest {
    
        private static ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = new ThreadLocal<SimpleDateFormat>() {
            @Override
            protected SimpleDateFormat initialValue() {
                return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            }
        };
    
        public static void main(String[] args) {
            Thread thread1 = new Thread(new Runnable() {
                @Override
                public void run() {
                    Date date = new Date();
                    System.out.println(dateFormatThreadLocal.get().format(date));
                }
            });
            Thread thread2 = new Thread(new Runnable() {
                @Override
                public void run() {
                    Date date = new Date();
                    System.out.println(dateFormatThreadLocal.get().format(date));
                }
            });
            thread1.start();
            thread2.start();
        }
    }

    ThreadLocal与同步机制的对比选择:
      ThreadLocal与同步机制都是 为了解决多线程中相同变量的访问冲突问题。
      前者采用以 "空间换时间" 的方法,后者采用以 "时间换空间" 的方式。

    二、为了更好的支持高并发任务,让开发者进行多线程编程时有效减少竞争条件和死锁线程,Java5提供了java.util.concurrent(JUC)包。

    JUC按照功能可以大致划分如下:

    juc-locks锁框架
    juc-atomic原子类框架
    juc-sync同步器框架
    juc-collections集合框架
    juc-executors执行器框架

    参考:

    Java线程同步与实现

  • 相关阅读:
    JavaScript-----7.循环
    3. CSS新特性之动画
    JavaScript-----6.流程控制:分支
    JavaScript-----5.运算符
    JavaScript-----4.数据类型
    2. CSS新特性之2D转换transform
    JavaScript-----3.变量
    JavaScript-----2初识
    JavaScript---1.计算机的编程基础
    品优购学习心得
  • 原文地址:https://www.cnblogs.com/cac2020/p/12098090.html
Copyright © 2020-2023  润新知