Wesley13 Wesley13
4年前
java之jvm
1.JVM内存模型_线程独占:栈,本地方法栈,程序计数器线程共享:堆,方法区_回答以上问题是需回答两个要点:1\.各部分功能2\.是否是线程共享2.JMM与内存可见性JMM是定义程序中变量的访问规则,线程对于变量的操作只能在自己的工作内存中进行,而不能直接对主内存操作.由于指令重排序,读写的顺序会被打乱,因此JMM需要
九章 九章
4年前
二 Java利用等待/通知机制实现一个线程池
接着上一篇博客的一Java线程的等待/通知模型(http://www.cnblogs.com/start1225/p/5866575.html"一java线程的等待/通知模型") ,没有看过的建议先看一下。下面我们用等待通知机制来实现一个线程池.(https://www.helloworld.net/p/XJXfgbimvcjd)本
Wesley13 Wesley13
4年前
Java中BigDecimal的8种舍入模式
java.math.BigDecimal不可变的、任意精度的有符号十进制数。BigDecimal由任意精度的整数非标度值和32位的整数标度(scale)组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以10的负scale次幂。因此,BigDecimal表示的数值是(unsc
Stella981 Stella981
4年前
Executors相关的类(线程池)
一、概述Java是天生就支持并发的语言,支持并发意味着多线程,线程的频繁创建在高并发及大数据量是非常消耗资源的,因为java提供了线程池。在jdk1.5以前的版本中,线程池的使用是及其简陋的,但是在JDK1.5后,有了很大的改善。JDK1.5之后加入了java.util.concurrent包,java.util.concurrent包的加入给
Stella981 Stella981
4年前
ConcurrentHashMap介绍
在进行结构性修改,如put/remove/replace时都需要进行加锁,但是读取并未加锁,并发情况下,由于内存不同步问题,会导致一个线程的写操作并不会立即对另一个线程可见。这里ConcurrentHashMap通过volatile变量的内存可见性特性来保证一个线程的写操作立即被其他线程可见,每个方法在一开始都会读取count这个变量,该变量就是一个vola
Wesley13 Wesley13
4年前
Java学习之ConcurrentHashMap实现一个本地缓存
  ConcurrentHashMap融合了Hashtable和HashMap二者的优势。  Hashtable是做了线程同步,HashMap未考虑同步。所以HashMap在单线程下效率较高,Hashtable在多线程下同步操作能保证程序的正确性。 但是Hashtable每次执行同步操作都需要锁住整个结构。  !(https://oscimg.
Wesley13 Wesley13
4年前
MySQL DBA的工作日常
导读作者:田帅萌(邮箱:tplinux@163.com,欢迎交流)知数堂MySQLDBA班第9期优秀学员,Python运维开发班第5期学员,现任职知数堂助教又到了一年换坑最频繁的季节,很多童鞋在跑路(当然不是删库跑路!(https://oscimg.oschina.net/oscnet/64201376c910468
Wesley13 Wesley13
4年前
Java中的ReentrantLock和synchronized两种锁定机制的对比
多线程和并发性并不是什么新内容,但是Java语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java语言包括了跨线程传达并发性约束的构造—— synchronized 和 volatile 。在简化与平台无关的并发类的开发的
Wesley13 Wesley13
4年前
Java thread run() start() 是干什么的以及区别
Java thread run() start()是干什么的?为什么一调他们就开始运行里面的方法了?以及区别?1.这个属于线程的同步机制问题,也就是线程安全问题,实际开发中用到多线程的例子很多,比如说:银行排号、火车站买票等,就是很多机器同时访问共享数据的时候就是这个了。2.线程启动之后(被调之后),会运行被覆盖的run方
Stella981 Stella981
4年前
A Mini Locomotive(动态规划 01)
 /\ 题意:选出3个连续的数的个数 为K的区间,使他们的和最大分析: dp\j\\i\max(dp\jk\\i1\value\j\,dp\j1\\i\);dp\j\\i\:从j个数种选出i个连续区间 数值的最大和value\j\:第j个区间内的数的和和背包有点像,但要活用\