美文网首页
Java并发和并行:(二)

Java并发和并行:(二)

作者: iwtbam | 来源:发表于2020-01-31 23:38 被阅读0次
  1. volatile 关键字
    • 保证内存可见
    • 防止指令重排
    • 不保证原子性

volatile 应用,双重检查单例模式

public class SingleInstance {
    private static volatile SingleInstance instance;
    public SingleInstance getInstance() {
         if(instance==null){
              synchronized(SingleInstance.class){
                  if(instance==null)
                      return  new SingleInstance();      
              }
          }
          return instance;
    }
}
  1. ThreadLocal
    ThreadLocal 可以让每个访问这个变量的线程的都用一个自己的副本。
    每个线程的内部都含有一个ThreadLocalMap, 记录每个ThreadLocal 变量对应的值。
public class Thread implements Runnable {
   ...
    ThreadLocal.ThreadLocalMap threadLocals = null;
   ...
}

ThreadLocal 的 get 和 set 是现获取的对应的线程的ThreadLocalMap , 然后对齐的本地ThreadLocal对应值进行操作。

class ThreadLocal<T> {

    public T get() {
        Thread t = Thread.currentThread();
        ThreadLocalMap map = getMap(t);
        if (map != null) {
            ThreadLocalMap.Entry e = map.getEntry(this);
            if (e != null) {
                @SuppressWarnings("unchecked")
                T result = (T)e.value;
                return result;
            }
        }
        return setInitialValue();
    }

   public void set(T value) {
        Thread t = Thread.currentThread();
        ThreadLocalMap map = getMap(t);
        if (map != null)
            map.set(this, value);
        else
            createMap(t, value);
    }

    ThreadLocalMap getMap(Thread t) {
        return t.threadLocals;
    }
}
  1. 线程池
    线程池的优点。
    • 降低资源的消耗
    • 提高效应的速度
    • 提高线程的可管理性

相关文章

  • Java并发编程整理之并发与并行概念讲解(1)

    Java并发编程整理之并发与并行概念讲解(1) 并发和并行区别 --[百度]:并发(Concurrent)当有多个...

  • Java并发和并行:(二)

    volatile 关键字保证内存可见防止指令重排不保证原子性 volatile 应用,双重检查单例模式 Threa...

  • 一. Java并发和多线程简介

    Java并发是一个涉及了java平台上多线程(MultiTheadings)、并发(Concurrency)和并行...

  • Tutorial

    Java Concurrency涵盖了Java平台上的多线程、并发性和并行性。这包括Java并发工具、问题以及解决...

  • Java并发和并行

    1. Java线程的创建和运行 2. Java 线程的几种状态 NEW:初始状态,线程被构建,但是还没有调用s...

  • java高并发之从零到放弃

    前言 这是一个长篇博客,希望大家关注我并且一起学习java高并发 废话不多说,直接开始 并行和并发 并行:多个线程...

  • java面试题(三)

    Java 多线程模块 1、并行和并发有什么区别? 并行:多个处理器或多核处理器同时处理多个任务。 并发:多个任务在...

  • 服务器并发设计

    并发与并行 并发技术选型 结构并发 状态并发 集群和负载均衡 并发(Coccurrency)和并行(Paralle...

  • Java核心类库 —— 线程和并发

    java核心类库之-------线程和并发体系图 1.基础操作 1.1 并发与并行 1.2 进程和线程 1...

  • java 并行 并发

    并发 “并发”在微观上不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行,从宏观外来看,好像是这些进程...

网友评论

      本文标题:Java并发和并行:(二)

      本文链接:https://www.haomeiwen.com/subject/ozrnthtx.html