![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
20个经典编程问题
文章平均质量分 84
经典编程问题,每日温习,深化内功
super_crazy123
算法,数据结构,多线程,JVM,设计模式,这些是内功,练好内功,其他的外在形式学起来就简单多了。
展开
-
JAVA阻塞队列与线程池
阻塞队列阻塞队列与我们平常接触的普通队列(LinkedList或ArrayList等)的最大不同点,在于阻塞队列提供阻塞添加和阻塞删除方法。阻塞添加所谓的阻塞添加是指当阻塞队列元素已满时,队列会阻塞加入元素的线程,直队列元素不满时才重新唤醒线程执行元素加入操作。阻塞删除阻塞删除是指在队列元素为空时,删除队列元素的线程将被阻塞,直到队列不为空再执行删除操作(一般都会返回被删除的元素)由于Java中的阻塞队列接口BlockingQueue继承自Queue接口,因此先来看看阻塞队列接口为我们提原创 2021-03-19 13:49:32 · 572 阅读 · 0 评论 -
JUC之Semaphore,CountDownLatch,CyclicBarrier, Exchanger
JUC就是java.util .concurrent工具包的简称。这是一个处理线程的工具包,JDK 1.5开始出现的。SemaphoreSemaphore:信号量,Semaphore是一个线程同步的辅助类,使用Semaphore可以控制同时访问资源的线程个数。构造方法: Semaphore(int permits) ,permits指定数量。超过访问数量后,请求线程将进入阻塞队列,当有其他线程释放许可后可以开始执行。Semaphore sp = new Semaphore(3);//创原创 2021-03-18 18:01:51 · 108 阅读 · 0 评论 -
ReetrantLock与AQS的底层原理
1、隐式锁和显式锁关键字synchronized属于隐式锁,即锁的持有与释放都是隐式的,我们无需干预。显式锁,即锁的持有和释放都必须由我们手动编写。2、Lock接口在Java 1.5中,官方在concurrent并发包中加入了Lock接口,该接口中提供了lock()方法和unLock()方法对显式加锁和显式释放锁操作进行支持。Lock lock = new ReentrantLock();lock.lock();try{ //临界区......}finally{原创 2021-03-08 20:37:17 · 270 阅读 · 0 评论 -
CAS的底层原理
1,什么是CAS?原创 2021-03-08 11:31:25 · 1106 阅读 · 1 评论 -
synchronized的底层原理
1、什么是线程安全问题?线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。因此为了解决这个问题,我们可能需要这样一个方案,当存在多个线程操作共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再进行,这种方式有个高尚的名称叫互斥锁。在 Java 中,关键字 synchronized可以保证在同一个时刻,只有一个线程可以执行某个方法或者某个代码块(主要是对方法或原创 2021-03-02 17:46:21 · 513 阅读 · 0 评论 -
多线程,锁与线程安全
1、进程就是程序运行的内存空间,包含程序运行所需的资源2、线程就是程序的最小执行单元,进程由多个线程组成,每个进程至少有一个主线程3、守护线程 daemon thread, 守护线程依赖于创建它的线程,会伴随被守护线程的消亡而消亡,jvm中的垃圾收集器就是一个守护线程4、线程new出来后,进入1就绪状态,start的之后,进入2可运行状态,得到cpu执行权就进入3运行状态,未得到cpu执行权进入4阻塞状态,运行时被wait进入5等待状态,运行完毕或者异常中断进入6死亡状态。...原创 2021-03-02 10:50:43 · 117 阅读 · 2 评论 -
gc垃圾回收机制详解
什么是垃圾?我们创建出来的对象没有引用指向的的时候,这个对象就再也无法被用到,就是说,这个对象已经成为了垃圾对象,一直存放在我们的内存当中我们怎么判断一个对象是不是垃圾两种方式引用计数法比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题可达性分析法GCRoot根搜索法这种方式从一个GCRoot根出发,所有依赖到的对象都被标记为不是垃圾,其他的都是垃圾GCRoot根:1原创 2021-02-23 11:25:55 · 544 阅读 · 0 评论 -
java内存模型
Java内存模型(即Java Memory Model,简称JMM)本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。由于JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(有些地方称为栈空间),用于存储线程私有的数据,而Java内存模型中规定所有变量都存储在主内存,主内存是共享内存区域,所有线程都可以访问,但线程对变量的操作(读取赋值等)必须在工作内存中进行,首先要将变量从主内原创 2021-02-22 17:21:37 · 93 阅读 · 0 评论 -
JAVA内存结构
https://blog.csdn.net/laomo_bible/article/details/83067810?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242https://blog.csdn.net/qq906627950/article/details/81324825原创 2021-02-22 15:17:33 · 133 阅读 · 1 评论 -
深入理解hashmap的原理
一、什么是哈希哈希也叫散列,是指原创 2018-05-14 14:14:46 · 237 阅读 · 0 评论