摘要: 为什么要使用ConcurrentHashMap? ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代hashMap和HashTable。因为在并发编程中使用HashMap可能导致程序死循环,而使用线程安全的HashTable效率又非常低下,基于以上两个原因 阅读全文
posted @ 2020-04-02 22:32 小L要努力吖 阅读(504) 评论(0) 推荐(0) 编辑
摘要: java中常用的可重入锁:synchronized,java.util.concurrent.locks.ReentrantLock jdk中独占锁的实现除了使用关键字synchronized外,还可以使用ReentrantLock。虽然在性能上ReentrantLock和synchronized没 阅读全文
posted @ 2020-03-30 14:57 小L要努力吖 阅读(495) 评论(0) 推荐(0) 编辑
摘要: 一,Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,而Java SE 5之后,并发包中新增了Lock 阅读全文
posted @ 2020-03-30 12:02 小L要努力吖 阅读(1165) 评论(0) 推荐(0) 编辑
摘要: 1.JVM体系结构 2. 类装载子系统 类装载子系统负责查找并装载类型,Java虚拟机有两种类装载器:启动类装载器(Java虚拟机实现的一部分)和自定义类装载器(Java程序的一部分)。类装载子系统负责定位和加载二进制class文件,并且保证加载的类的正确性,为类变量分配内存并初始化,以及帮助解析符 阅读全文
posted @ 2020-03-23 14:50 小L要努力吖 阅读(448) 评论(0) 推荐(2) 编辑
摘要: 1.synchronized概述: synchronized修饰的方法或代码块相当于并发中的临界区,即在同一时刻jvm只允许一个线程进入执行。synchronized是通过锁机制实现同一时刻只允许一个线程来访问共享资源的。另外synchronized锁机制还可以保证线程并发运行的原子性,有序性,可见 阅读全文
posted @ 2020-03-18 18:03 小L要努力吖 阅读(4779) 评论(0) 推荐(3) 编辑
摘要: 一,基本概念 乐观锁:乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。 悲观锁:悲观锁在操作数据时比较悲观,认为别人会同时修改数据。因此操作数据时直接把数据锁住,直到操作完成 阅读全文
posted @ 2020-03-16 19:46 小L要努力吖 阅读(728) 评论(0) 推荐(2) 编辑
摘要: 我们先来看段代码: 1 class ThreadVolatileDemo extends Thread{ 2 static boolean flag=true;//注意该变量没有被volatile修饰 3 @Override 4 public void run() { 5 while(flag){ 阅读全文
posted @ 2020-03-13 10:53 小L要努力吖 阅读(1170) 评论(0) 推荐(1) 编辑
摘要: 为什么会有线程池?? 之前的时候,我们每使用一次线程就去创建一个线程,这样虽然实现起来非常简便,但是会有一个问题,如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间,而且还容易造成线程池溢出。于是人们想到 阅读全文
posted @ 2020-03-11 17:23 小L要努力吖 阅读(2325) 评论(2) 推荐(2) 编辑
摘要: 一,多线程的三大特性 原子性,可见性,有序性。 原子性是指在一次的操作或者多次操作中,要么所有的操作全部都得到了执行并且不会受到任何因素的干扰而中断,要么所有的操作都不执行; 可见性是指一个线程被多个线程共享,当其中一个线程对共享变量进行了修改,那么另外的线程可以立即看到修改后的最新值; 有序性有两 阅读全文
posted @ 2020-03-10 17:32 小L要努力吖 阅读(496) 评论(0) 推荐(0) 编辑
摘要: 一,概述。 1.什么叫做线程间通信: 在1个进程中,线程往往不是孤立存在的,线程之间需要一些协调通信,来共同完成一件任务。也就是通过一定的方法来实现线程间的“交流”。 2.线程间通信的体现: - 1个线程传递数据给另1个线程 - 在1个线程中执行完特定任务后,转到另1个线程继续执行任务 二,线程通信 阅读全文
posted @ 2020-03-01 15:19 小L要努力吖 阅读(596) 评论(0) 推荐(0) 编辑