Java基础
哎呀妈呀脑壳疼脑壳疼
现就职于百度(上海)
展开
-
线程安全的概念
线程安全的概念线程安全:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的package com.louis.线程;public class MyThread extends Thread{ private int count = 5; public void run(){ count--; ...原创 2018-10-04 20:26:29 · 413 阅读 · 0 评论 -
并发类容器
一、 ConcurrentHashMap减少锁粒度的思想http://www.importnew.com/28263.htmlhttps://www.cnblogs.com/dolphin0520/p/3932905.htmlhttp://www.importnew.com/26035.html二、CopyOnWrite读写分离的思想,读和写是不同的容器...原创 2018-10-13 22:44:09 · 107 阅读 · 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 · 140 阅读 · 0 评论 -
ThreadLocal
以空间换时间的手段,为每个线程提供变量的独立副本,以保障线程安全。从性能上说,ThreadLocal不具有绝对的优势,在并发不是很高的时候,加锁的性能会更好,但作为一套与锁完全无关的线程安全解决方案,在高并发量或竞争激烈的场景,使用threadlocal可以在一定程度上减少锁竞争。package com.louis.线程;public class ConnThreadLocal { ...原创 2018-10-13 10:04:24 · 109 阅读 · 0 评论 -
使用wait/notify模拟
模拟实现LinedBlockingQueue下面两个简单的方法put(),get()//put(anObject): 把anObject加到BlockingQueue里,如果BlockQueue没有空间,则调用此方法的线程被阻断,直到BlockingQueue里面有空间再继续.//take: 取走BlockingQueue里排在首位的对象,若BlockingQueue为空,阻断进入等待状态直到...原创 2018-10-13 09:50:50 · 148 阅读 · 0 评论 -
Synchronized的用法
一、可重入性synchronized是具有可重入性的,在秋招阶段有两个公司问到这个问题,一个公司是直接问synchronized是否是可重入的,我当时的回答是“根据底层monitorenter和monitorexit原理,应该是可重入的”。另一家公司(可能是小米,难怪几个星期都没有收到二面通知)是给我出了一个题目:A()用synchronized修饰,B()用synchronized修饰,那么A...原创 2018-10-06 15:46:27 · 313 阅读 · 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 · 112 阅读 · 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 · 139 阅读 · 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 · 158 阅读 · 0 评论 -
并发
一、ConcurrentLinkedQueue高性能队列适用于高并发场景下的队列,通过无锁的方式,实现了高并发状态下的高性能,通常ConcurrentLinkedQueue性能好于BlockingQueue.二、BlockingQueue阻塞队列...原创 2018-10-13 23:08:48 · 143 阅读 · 0 评论