
Java基础
哎呀妈呀脑壳疼脑壳疼
现就职于百度(上海)
展开
-
线程安全的概念
线程安全的概念 线程安全:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的 package com.louis.线程; public class MyThread extends Thread{ private int count = 5; public void run(){ count--; ...原创 2018-10-04 20:26:29 · 434 阅读 · 0 评论 -
并发类容器
一、 ConcurrentHashMap 减少锁粒度的思想 http://www.importnew.com/28263.html https://www.cnblogs.com/dolphin0520/p/3932905.html http://www.importnew.com/26035.html 二、CopyOnWrite 读写分离的思想,读和写是不同的容器 ...原创 2018-10-13 22:44:09 · 122 阅读 · 0 评论 -
线程间通信
一、线程通信方式-共享变量 package com.louis.线程; import java.util.ArrayList; import java.util.List; public class ListAdd1 { private volatile static List list = new ArrayList(); public void add(){ list....原创 2018-10-06 17:32:32 · 159 阅读 · 0 评论 -
ThreadLocal
以空间换时间的手段,为每个线程提供变量的独立副本,以保障线程安全。从性能上说,ThreadLocal不具有绝对的优势,在并发不是很高的时候,加锁的性能会更好,但作为一套与锁完全无关的线程安全解决方案,在高并发量或竞争激烈的场景,使用threadlocal可以在一定程度上减少锁竞争。 package com.louis.线程; public class ConnThreadLocal { ...原创 2018-10-13 10:04:24 · 129 阅读 · 0 评论 -
使用wait/notify模拟
模拟实现LinedBlockingQueue下面两个简单的方法put(),get() //put(anObject): 把anObject加到BlockingQueue里,如果BlockQueue没有空间,则调用此方法的线程被阻断,直到BlockingQueue里面有空间再继续. //take: 取走BlockingQueue里排在首位的对象,若BlockingQueue为空,阻断进入等待状态直到...原创 2018-10-13 09:50:50 · 172 阅读 · 0 评论 -
Synchronized的用法
一、可重入性 synchronized是具有可重入性的,在秋招阶段有两个公司问到这个问题,一个公司是直接问synchronized是否是可重入的,我当时的回答是“根据底层monitorenter和monitorexit原理,应该是可重入的”。另一家公司(可能是小米,难怪几个星期都没有收到二面通知)是给我出了一个题目:A()用synchronized修饰,B()用synchronized修饰,那么A...原创 2018-10-06 15:46:27 · 333 阅读 · 0 评论 -
脏读
先上一个例子 package com.louis.线程; public class DirtyRead { private String username = "bjsxt"; private String password = "123"; public synchronized void setValue(String username, String passwo...原创 2018-10-04 22:58:45 · 130 阅读 · 0 评论 -
对象锁的同步和异步问题
一、异步访问 method1加了synchronized修饰,method2没有加synchronized修饰。 package com.louis.线程; public class MyObject { public synchronized void method1(){ try { System.out.println(Thread.curr...原创 2018-10-04 22:45:02 · 160 阅读 · 0 评论 -
多个线程多个锁
一、多个线程将锁加在实例上 package com.louis.线程; public class MultiThread { private int num = 0; /** static */ public synchronized void printNum(String tag){ tr...原创 2018-10-04 22:30:10 · 177 阅读 · 0 评论 -
并发
一、ConcurrentLinkedQueue高性能队列 适用于高并发场景下的队列,通过无锁的方式,实现了高并发状态下的高性能,通常ConcurrentLinkedQueue性能好于BlockingQueue. 二、BlockingQueue阻塞队列 ...原创 2018-10-13 23:08:48 · 159 阅读 · 0 评论