JAVA
想增肥的程序员
这个作者很懒,什么都没留下…
展开
-
JAVA日常学习之----实现线程安全的单例模式
实现线程安全的单例模式: 饿汉模式,即在声明类时创建类,是线程安全的,private static Singleton singleton=new Singleton(); 使用synchronized关键字实现线程安全,可以把关键字synchronized(Singleton.class)加到方法上或者IF判断语句上。 使用双检查锁机制实现线程安全。 public class Sing...原创 2019-08-28 20:22:42 · 106 阅读 · 0 评论 -
JAVA日常学习----线程池
线程池的好处:使用线程池的好处是减少系统在创建线程和销毁线程时所使用的时间与开销,解决资源不足的问题,如果不使用线 程池,有可能导致系统创建大量的线程而导致内存消耗或者“过度切换”的问题。 线程池创建方法: Executors.newCachedThreadPool():无限线程池。 Executors.newFixedThreadPool(nThreads):创建固定大小的线程池。 E...原创 2019-09-01 10:42:46 · 147 阅读 · 0 评论 -
JAVA日常学习----volatile
并发编程中的三个概念 原子性:一个操作和多个操作,要么全部执行完,要不全部不执行。 可见性:多个线程同时访问一个变量时,一个线程修改了变量值,其他线程能够立即看见。 有序性:程序按照代码先后顺序执行。JVM在编译时会发生指令重排序。 想要程序正确的执行,必须保证程序的原子性、可见性和有序性。否则程序执行出错。 JAVA内存模型规定所有变量存储在主存中(类似与物理内存),每个线程有自己的工...原创 2019-09-03 20:48:00 · 107 阅读 · 0 评论 -
JAVA日常学习--HashMap
1.HashMap底层是一个数组,数组的每一项是一个链表,新建HashMap的时候会创建一个数组 transient Entry[] table; static class Entry<K,V> implements Map.Entry<K,V> { final K key; V value; Entry<K,V> next; ...原创 2019-09-05 20:52:12 · 87 阅读 · 0 评论 -
JAVA日常学习----锁
1.synchronized锁 synchronized锁可以加在方法和代码块上。 当一个线程正在访问一个对象的synchronized方法,那么其他线程不能访问该对象的其他synchronized方法。 当一个线程正在访问一个对象的synchronized方法,那么其他线程能访问该对象的非synchronized方法。 如果一个线程A需要访问对象object1的syn...原创 2019-09-07 18:48:42 · 139 阅读 · 0 评论