Java线程安全 可见性,原子性,有序性 Java内存模型(JMM) Java内存模型(Java Memory Model)描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取变量这样的底层细节。 所有的变量都存储在主内存中。 每个线程都有自己独立的工 ...
分类:
编程语言 时间:
2019-02-06 13:17:11
阅读次数:
200
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开 ...
分类:
编程语言 时间:
2019-02-03 18:18:37
阅读次数:
167
本文索引 问题引入 context包简介 示例 问题引入 goroutine为我们提供了轻量级的并发实现,作为golang最大的亮点之一更是备受推崇。 goroutine的简单固然有利于我们的开发,但简单总是有代价的,考虑如下例子: golang func httpDo(req http.Reque ...
分类:
其他好文 时间:
2019-01-31 21:35:13
阅读次数:
165
volatile的作用:1.内存可见性2.禁止指令重排序可见性是指,在多线程环境下,共享变量的操作对于每个线程来说,都是内存可见的,也就是每个线程获取的volatile变量都是最新值;并且每个线程对volatile变量的修改,都直接刷新到主存。下面重点介绍指令重排序。一、为什么要指令重排序为了提高程 ...
分类:
其他好文 时间:
2019-01-27 21:46:13
阅读次数:
186
构建并发服务器的方法:在父进程中接收客户端连接请求,然后创建一个新的子进程来为每个新客户端提供服务。 假设现在有两个客户端和一个服务器,服务器正在监听一个监听描述符上的连接请求。并发过程如下: 1、服务器接受客户端1的连接请求 2、服务器派生一个子进程为这个客户端1服务 3、服务器接受另一个客户端2 ...
分类:
其他好文 时间:
2019-01-27 19:21:14
阅读次数:
181
用法:ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。 ThreadLocal.get: 获取ThreadLocal中当前线程共享变量的值。 ThreadLocal.se ...
分类:
编程语言 时间:
2019-01-24 13:26:37
阅读次数:
183
背景:并发知识是一个程序员段位升级的体现,同样也是进入BAT的必经之路,有必要把并发知识重新梳理一遍。 并发concurrent: 使用ThreadLocal可以实现线程范围内共享变量,线程A写入的值和线程B获取到的结果一致;ReentrantReadWriteLock允许多个读线程或多个写线程同时 ...
分类:
其他好文 时间:
2019-01-20 00:10:04
阅读次数:
193
变量作用域 tensorflow提供了变量作用域和共享变量这样的概念,有几个重要的作用。 让模型代码更加清晰,作用分明 变量作用域域 通过tf.variable_scope(<scope_name>)创建指定名字的变量作用域 加上with语句就可以在整个itcast变量作用域下就行操作。 嵌套使用 ...
分类:
其他好文 时间:
2019-01-16 11:49:13
阅读次数:
216
一、用法ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己当前线程的变量,而不会影响其他线程的变量。1、ThreadLocal.get: 获取ThreadLocal中当前线程共享变量的值。2、ThreadL ...
分类:
其他好文 时间:
2019-01-16 01:09:05
阅读次数:
174
单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。 单例模式一般体现在类声明中,单例的类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 适用场合: 需要频繁的进行创建和销毁的对象; 创建对象时耗 ...
分类:
其他好文 时间:
2019-01-11 13:12:09
阅读次数:
170