![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习计划-共勉
以学习技术底层为目的,积累学习笔记,广大网友共勉,共同商讨进步。
Java程序源
多线程栏,所有的文章、测试样例均来自“实战·JAVA高并发程序设计”的个人总结,文章内有书单链接。博客文章均来自职业生涯总结。
展开
-
java 各个中间件技术框架及思考。希望大家来一起完善
做一个思考:这么多 我们该如何正确的选择适合自己的?网关:Nginx、Kong、Zuul缓存:Redis、MemCached、OsCache、EhCache搜索:ElasticSearch、Solra、如何优化?如何具备更好的兼容性?熔断:Hystrix、resilience4ja、如何更灵活控制?更安全稳定?负载均衡:DNS、F5、LVS、Nginx、OpenResty、HAproxy注册中心:Eureka、Zookeeper、Redis、Etcd、Consul认证鉴权:JWT消费队原创 2021-01-11 22:49:28 · 427 阅读 · 0 评论 -
(九)线程不安全的容器 :HashMap
上一篇我们说了ArrayList是个不安全的容器,这里我们再说说HashMap。HashMap研究起来会比ArrayList更加有意思。解决方案:使用 ConcurrentHashMap 代替 HashMappackage com.zmkj.admin.test;import java.util.HashMap;import java.util.Map;/** * 线程不安全的容器 : HashMap * * @author sunminghao */public class H原创 2021-06-03 00:30:17 · 142 阅读 · 0 评论 -
(八)线程不安全的容器:ArrayList
ArrayList这个集合在实际开发中我们经常用到,但是在多线程中我们是不可以使用的,这也正是因为他是一个线程不安全的容器,同时还有HashMap(看下一篇文章),这里我们先说一下ArrayList。解决方法:改进的方法很简单,如程序上的注释行一样,使用线程安全的 Vector 代替 ArrayList 即可。package com.zmkj.admin.test;import java.util.ArrayList;/** * 线程不安全的容器:ArrayList * * ArrayL原创 2021-06-03 00:26:31 · 150 阅读 · 0 评论 -
(七)线程的优先级Priority和关键词:synchronized
线程执行顺序,其实就是看谁先争夺到资源,那么有没有办法改变这种机制呢?答案是,有的,但是也只是干预,并不是说不让他们去争夺资源。那就是使用了:线程优先级同时我们也简单了解一下 synchronized 这个关键词,了解一下他的特性和简单用法等。package com.zmkj.admin.test;import lombok.SneakyThrows;/** * 线程优先级 * * 温习一下线程的几种状态: * 新建(NEW)、可运行(RUNNABLE)、运行(RUNNING)、阻原创 2021-06-03 00:16:30 · 348 阅读 · 0 评论 -
(六)线程的5种状态详解
之前忘记记录了,今天看到这个老猫大佬的这篇就拉过来记录一下下 ,写的很不错。 Java中的线程的生命周期大体可分为5种状态。 1. 新建(NEW):新创建了一个线程对象。 2. 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。 3. 转载 2021-05-30 22:20:34 · 211 阅读 · 0 评论 -
(五)多线程:等待线程结束(join)和谦让(yeild)
多线程也是很有礼貌的,毕竟都是二十一世纪了,大家都是文明人。来!瞅瞅人家的素质 哈哈哈package com.zmkj.admin.test;import lombok.SneakyThrows;/** * 等待线程结束(join)和谦让(yeild) * * 将他们两个的关系对应到多线程中,很多时候,一个线程的输入可能非常依赖于另外一个或者多个线程的输出, * 此时,这个线程就需要等待依赖线程执行完毕,才能继续执行。 * * @author sunminghao */原创 2021-05-27 00:22:22 · 146 阅读 · 0 评论 -
(四)使用好多线程挂起suspend和继续执行resume
之前介绍了多线程的挂起suspend()和继续执行resume()也说了他的弊端,不建议使用是一回事,但是并不影响我们去了解他们下面我们说一下 如何规避其弊端,更好的使用他这里也就结合了多线程的等待wait() 和唤醒notify()package com.zmkj.admin.test;/** * * SuspendAndResume 挂起 和 继续执行的问题 * 这里说一下 如何 搞一个比较靠谱的Suspend 方法 * * @author sunminghao */publ原创 2021-05-26 22:46:15 · 196 阅读 · 0 评论 -
(三)多线程挂起(suspend)和继续执行(resume)
说完多线程的等待wait()和唤醒notify(),这里再说一下挂起suspend()和继续执行resume()package com.zmkj.admin.test;/** * 线程的 挂起(suspend) 和 继续执行(resume) * 这两个操作是一对相对的操作,被挂起的线程必须要等到resume()方法操作后,才能继续执行。 * * 乍一看,其实和Thread.stop()方法一样, * 但是,在文档说明中,他们早已被标注为 废弃方法 ,并不推荐使用。 * (其实Thread.原创 2021-05-26 22:42:08 · 533 阅读 · 0 评论 -
(二)多线程notify()是唤醒线程顺序:有序的!有序的!
多线程notify()是有序唤醒线程的!!有序的!!有序的!!重要的事情说三遍 就是有序的唤醒等待的线程的之前网上有很多说notify是随时唤醒线程的 是错的这里我们用两个例子来举证一下 ,这种方式比源码来的简单当然如果不够详细的话 大家可以去研究一下 wait和notify的源码,这里我就不贴出来了package com.zmkj.admin.test;import java.util.LinkedList;import java.util.List;import java.uti原创 2021-05-24 14:29:12 · 1010 阅读 · 0 评论 -
(一)多线程的wait()和notify()简单例子
多线程wait()使一个线程中断执行,处于等待的状态,notify()则是唤醒一个处于等待的线程,继续向下执行上简单案例同时思考几个问题package com.zmkj.admin.test;/** * wait() notify() 简单案例 * * 知识点: * 1、线程的等待、睡眠、唤醒 方式 * 2、notify 是立即释放锁吗? * * @author sunminghao */public class WaitAndNotify { final s原创 2021-05-24 14:16:13 · 429 阅读 · 0 评论 -
Mysql分区表的原理和优缺点以及注意点
1.分区表的原理分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表的索引只是在各个底层表上各自加上一个相同的索引,从存储引擎的角度来看,底层表和一个普通表没有任何不同,存储引擎也无须知道这是一个普通表还是一个分区表的一部分。在分区表上的操作按照下面的操作逻辑进行:select查询:当查询一个分区表的时候,分区层先打开并锁住所有的底层表,优化器判断是否可以过滤部分分区原创 2021-02-03 00:04:51 · 705 阅读 · 0 评论 -
Mysql分区表概述、分区类型、分区管理
一、分区概述分区是指根据一定的规则,数据库把一个表分解成多个更小的、更容易管理的部分。分区有利于管理非常大的表。MySQL分区的优点主要包括以下4个方面:1、和单个磁盘或者文件系统相比,可以存储更多的数据2、优化查询。where子句包含分区条件时,可以只扫描对应分区,缩小了查询范围。同时在涉及count()和sum()等聚合函数时,可以在多个分区上并行处理。3、对于已经过期或不需要的数据,可以通过删除分区快速删除。4、跨多个磁盘来分散数据查询,以获得更大的查询吞吐量。创建分区表:mysql&原创 2021-02-02 23:57:45 · 685 阅读 · 0 评论