zoukankan      html  css  js  c++  java
  • 【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线程同步与实现

  • 相关阅读:
    Web 前端开发中一些兼容性问题及其解决办法 (持续更)
    沈逸的IT专栏---shenyisyn
    程序员该做的事
    职场需要切忌的几点——《程序员,你伤不起》
    百度天气API接口
    C#简单音乐播放器ListBox歌单列表
    CentOS7 安装java(jre 1.8)
    CentOS7 系统安装与设置
    这个可以有,记录下
    在centos 7中让网卡自启动
  • 原文地址:https://www.cnblogs.com/cac2020/p/12098090.html
Copyright © 2011-2022 走看看