随笔分类 -  并发编程

java高并发场景,jvm的原理。满满的干货
摘要:package com.example.demo; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Reent 阅读全文
posted @ 2022-06-21 23:05 发疯的man 阅读(0) 评论(0) 推荐(0) 编辑
摘要:开门一张图 各个参数含义 int corePoolSize :线程池中核心线程数。 < corePoolSize ,就会创建新线程 。 > corePoolSize 这个任务就会保存到BlockingQueue。 注意:线程池最开始是没有线程的,当有任务的时候才new线程,然后保持corePoolS 阅读全文
posted @ 2019-04-22 23:23 发疯的man 阅读(249) 评论(0) 推荐(0) 编辑
摘要:主要api java.util.concurrent包下的新类。LinkedBlockingQueue就是其中之一,是一个阻塞的线程安全的队列,底层采用链表实现。 LinkedBlockingQueue构造的时候若没有指定大小,则默认大小为Integer.MAX_VALUE,当然也可以在构造函数的参 阅读全文
posted @ 2019-04-22 22:53 发疯的man 阅读(8443) 评论(0) 推荐(0) 编辑
摘要:实现Runnable接口 实现Callable接口,允许有返回值 继承Thread类创建线程 如何让线程停止? 怎么样才能让Java里的线程安全停止工作呢? 线程自然终止:自然执行完或抛出未处理异常, stop() (停止线程),resume() (继续执行线程), suspend() (挂起线程  阅读全文
posted @ 2019-04-02 23:59 发疯的man 阅读(1657) 评论(0) 推荐(0) 编辑
摘要:CPU核心数和线程数的关系 核心数:线程数=1:1 ;使用了超线程技术后 > 1:2 CPU时间片轮转机制 又称RR调度,会导致上下文切换 什么是进程和线程 进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源 线程:CPU调度的最小单位,必须依赖进程而存在。 澄清并行和并发 阅读全文
posted @ 2019-04-02 23:28 发疯的man 阅读(905) 评论(0) 推荐(0) 编辑
摘要:参考博客:https://www.cnblogs.com/daoqidelv/p/6753162.html java cocurrent包提供了很多并发容器,在提供并发控制的前提下,通过优化,提升性能 为什么JUC需要提供并发容器? 1. java.util包中的大部分容器都是非线程安全的,若要在多 阅读全文
posted @ 2018-09-04 10:20 发疯的man 阅读(855) 评论(0) 推荐(0) 编辑
摘要:七个参数: corePoolSize:核心池的大小,在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待有任务到来才创建线程去执行任务,当有任务来之后,就会创建一个线程去执行任务,当线程池中的线程数目达到corePoolSize后,就会把到达的任务放到缓存队列当中; maximumPool 阅读全文
posted @ 2018-08-04 15:47 发疯的man 阅读(628) 评论(0) 推荐(0) 编辑
摘要:但是volatile不适合做计数器使用,即使他具有可见性,但是它不具有原子性。不能保证数据的一致性。 但是volatile适合哪种场景呢? 比较适合做一些标示。比如说两个线程,线程B必须得等线程A执行完才能执行。看代码 阅读全文
posted @ 2018-08-04 12:18 发疯的man 阅读(227) 评论(0) 推荐(0) 编辑
摘要:synchronized 是什么时候释放?1.获取锁的线程执行完代码2.线程执行出现异常 synchronized 的缺陷?1.Lock类可以主动释放锁。2.synchronized 是被动。ReadWriteLock 读写锁 readLock 和 writeLockReentranLock 可重入 阅读全文
posted @ 2018-08-02 00:52 发疯的man 阅读(413) 评论(0) 推荐(0) 编辑
摘要:如果我们new了好几个线程,然后开始执行,肯定不是按照顺序执行的,因为多线程.start()方法开始执行之后,并不意味着立即执行,而是到就绪状态,等待cpu的调度,cpu如何调度,那我们就没法知道了,但是如何让线程按照指定的顺序来执行呢?我们可以利用线程的join方法。join()方法的主要作用是让 阅读全文
posted @ 2018-08-01 21:44 发疯的man 阅读(5379) 评论(0) 推荐(1) 编辑
摘要:主内存和cpu之间的关系,因为cpu是在是处理速度太快了。所以一般cpu都有一个cpu缓存,上图的意思是主内存 》cpu缓存 》cpu寄存器 》cpu执行处理,写的时候反之。 看上图,就是多线程情况下java操作变量的大致步骤,需要注意的是,多线程操作的变量都是从主内存拿到的是变量的副本,然后进行一 阅读全文
posted @ 2018-05-01 00:06 发疯的man 阅读(1796) 评论(0) 推荐(0) 编辑

喜欢请打赏

扫描二维码打赏

了解更多

喜欢请打赏

点击右上角即可分享
微信分享提示