CodeMartain
有阳光 却感觉冷
展开
-
Go语言的[GPM模型]
在go中,线程是运行Groutine的实体,调度器的功能是把可以运行的Groutine分配到工作线程上。原创 2023-09-10 20:56:54 · 443 阅读 · 0 评论 -
Java高并发包里atomic包
java并发包里实用程序类在并发编程中通常很有用。此包包括一些小型的标准化可扩展框架,以及一些提供有用功能但其他方面繁琐或难以实现的类。原子包下提供了原子操作类------该包下主要提供了(boolean,int,long以及引用类型的的Reference)提供了其包装类的的原子操作类---- 对于数组有对应的原子操作类 对于类中 字段的原子操作类 对于数据更加精准控制的 对于累加操作atomic包下的类代码敬上—》》分析—>>两个线程,其中一个线程通过whi原创 2022-06-19 22:14:10 · 262 阅读 · 0 评论 -
深入学习Redis底层----实际应用(二)
RedisRedis特点Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。Redis 优势性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。丰富的数据类型 – R原创 2022-04-29 15:28:20 · 178 阅读 · 0 评论 -
ThreadLocal
只要线程是活的并且实例是可访问的,每个线程都暗中引用其线程本地变量的副本:线程消失后,其线程本地实例的所有副本都受到垃圾收集的约束(除非存在对这些副本的其他引用)。原创 2021-10-23 21:24:13 · 134 阅读 · 0 评论 -
Apache-Solr的部署与使用
~在海量数据下,对MySQL或Oracle进行模糊查询或条件查询的效率是很低的;~> Solr 是一个独立的企业搜索服务器,具有类似 REST 的 API。 你把 通过 JSON、XML、CSV 或 HTTP 上的二进制文件(称为“索引”)。 您通过 HTTP GET 查询它并接收 JSON、XML、CSV 或二进制结果。常见的搜索解决方案~>基于Apache Lucene(全文检索工具库)实现搜索>基于谷歌API实现搜索和基于百度API实现搜索;Solr 在使用 Lucene 搜索库并对原创 2022-03-05 22:51:06 · 478 阅读 · 0 评论 -
Dubbo实现CURD
dubbo3实现服务的调用原创 2022-02-25 21:20:49 · 358 阅读 · 0 评论 -
多线程与高并发第十二节线程阻塞与唤醒--(8.21日更新)
线程阻塞线程阻塞的几种方式方式一----Thread.join()方法方式二----Object中的wait()方法----阻塞方式三----Lock接口实现类中的wait()方法----阻塞Object中的wait()方法Condition中的await()方法方式四----CountDownLatch----阻塞线程阻塞的几种方式再学习LockSupport之前,我们学过了能让线程阻塞的几种方式-----方式一----Thread.join()方法public class LearnTest原创 2021-08-21 21:34:42 · 133 阅读 · 0 评论 -
多线程与高并发第十节线程锁存器---Semaphore(21.10.03日更新)
按照惯例,先看代码—在学习;代码的大致逻辑是-----好多线程访问同一个数据,但是线程太多的话,服务器有压力 需要对访问的线程数量做出限制;import java.util.concurrent.Semaphore;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class SeaphoreTest { static int TicketNum原创 2021-08-20 19:15:25 · 124 阅读 · 0 评论 -
线程的生命周期
sleep()yield()与join()你弄懂了吗原创 2021-10-06 22:30:14 · 154 阅读 · 0 评论 -
多线程与高并发第八节,课堂知识小结21.08.12----生产者消费者问题(更新...)
也不啰嗦,学过的都知道问题的描述,已经是大神级别的也不会来看这篇文章吧…public class Product {//生产的商品信息 private String Brand; private String name; public String getBrand() { return Brand; } public void setBrand(String brand) { Brand = brand; } .原创 2021-08-12 12:07:46 · 96 阅读 · 0 评论 -
可重入锁与读写锁的效率对比(21.10.3更新)
啥也不说,直接上代码import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * @a原创 2021-08-19 12:05:21 · 217 阅读 · 0 评论 -
开辟线程的方式到底有几种?
小结----线程的启动方式覆写/实现run()方法1,继承Thread类-----new MyThread().start();2,new Thread®.start; 其中r可以是lambda,可以实现runnable接口也可以是继承Thread的类3,ThreadPool 线程池的方式4,Future Callable以及FutureTask但是归根结底就是描述一------->>>>>继承Thread/实现Runnable/Callable描述二----------->>>>>覆原创 2021-10-05 17:15:35 · 234 阅读 · 0 评论 -
synchronized锁升级的过程
偏向锁为什么要有偏向锁呢?偏向锁主要用来优化同一线程多次申请同一个锁的竞争。可能大部分时间一个锁都是被一个线程持有和竞争。假如一个锁被线程 A 持有,后释放;接下来又被线程 A 持有、释放……如果使用 monitor,则每次都会发生用户态和内核态的切换,性能低下。作用:当一个线程再次访问这个同步代码或方法时,该线程只需去对象头的 Mark Word 判断是否有偏向锁指向它的 ID,无需再进入 Monitor 去竞争对象了。当对象被当做同步锁并有一个线程抢到了锁时,锁标志位还是 01,“是否偏向锁”..原创 2021-10-10 22:36:10 · 246 阅读 · 0 评论 -
多线程与高并发第十节线程锁存器---CountDownLatch与CyclicBarrier(8.19更新)
线程控制器CountDownLatchCountDownLatch类的常用方法代码演示-------await()与await(long timeout,TimeUnit unit)方法相同点------异同点------CyclicBarrierCyclicBarrier类的常用方法代码演示-------await()与await(long timeout,TimeUnit unit)方法相同点------异同点------CountDownLatchCountDownLatch类的基本信息pub原创 2021-08-18 11:13:50 · 375 阅读 · 0 评论 -
一直在模仿从没有超越........高并发情况下不同的线程安全问题的时间花费对比
主要使用锁与原子类进行操作,Class LongClass LongAdderClass AtomicLongpackage victory;import java.util.concurrent.atomic.AtomicLong;import java.util.concurrent.atomic.LongAdder;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantL.原创 2021-08-15 12:56:25 · 118 阅读 · 0 评论 -
多线程与高并发第三节,课堂知识小结21.08.06--
**在java中如果不设置优先级,则默认优先级为5,入过设置某线程的优先级很高,那么一定会先执行该线程吗?**原创 2021-08-06 18:46:58 · 121 阅读 · 0 评论 -
多线程与高并发第十一节线程锁存器---锁存器Phaser类的应用之张三李四王五去参加李二狗的婚礼 21.10.12更新
锁存器Phaser类问题引出------必须学习的内容----Phaser类类的基本信息----类的----构造方法类的----常用方法三级目录问题引出------前几天群里收到了李二狗的婚礼邀请函,于是就有了以下问题-----婚礼的流程是怎样的?怎样用代码来展示?先简单说一下婚礼流程------第一阶段-----包含三个小阶段人到了----arrivePerson()门口坐着收份子钱的老大爷,--------giveMoney() //为了方便写代码,假设人齐了才能收份子钱;将给份子原创 2021-08-18 19:56:17 · 157 阅读 · 0 评论 -
多线程与高并发第二节,课堂知识小结21.08.02
为什么要学习多线程与高并发,就让程序这么不受约束的运行不好吗?多线程与高并发不受约束的运行--的后果同步线程的几种方式三级目录不受约束的运行–的后果package HuiXin;class Buytickets extends Thread { int ticket = 12; public Buytickets(String name) { super(name); } @Override public void run() {.原创 2021-08-04 16:13:02 · 115 阅读 · 0 评论 -
多线程与高并发第四节,课堂知识小结21.08.07--线程安全问题
下面以我们入门学习的买票问题进行分析----线程安全分析线程开启的方式继承Thread类实现Runnable接口实现Callable接口线程开启的方式继承Thread类,实现Runnab.原创 2021-08-07 17:32:13 · 163 阅读 · 0 评论 -
多线程与高并发第八节,课堂知识小结21.08.14----java中的原子基本数据类
起晚了,都说三更灯火五更鸡,奈何熬夜伤身体;偏偏秉烛夜游…java中的原子类原子类定义----原子类包含哪些? 为什么要有原子类原子基本类类的信息继承和实现关系----构造方法常用方法原子基本类线程安全为什么要有原子类原子类定义----简单来说就是跟原子操作一样,能够保证线程的安全原子类包含哪些? 为什么要有原子类今天借机会整理一下java中的原子类,看看他们是怎么用的;先找一下java中的原子类总体图------原子基本类public class.原创 2021-08-14 13:12:57 · 171 阅读 · 0 评论 -
如何优雅的结束线程~~interrupt()、volatile
如何优雅的结束线程interrupt()isInterrupted()如何优雅的结束线程interrupted()在java中有三个很容易让初学者混乱的三个方法interrupt()、isInterrupted()和interrupted(),他们到底有什么区别呢?接下来一来看看吧!interrupt()当调用一下方法时 wait(), wait(long), 或者 wait(long, int)的方法 ,或 join(), join(long)原创 2021-10-07 20:28:58 · 149 阅读 · 0 评论 -
高并发三大特性
高并发三大特性原创 2021-10-08 21:40:43 · 371 阅读 · 0 评论 -
为了深入学习synchronied,我从JDK17换回了JDK1.8
学无止境,当你知道的越多,会发现越无知!!!深入学习synchronied闲言碎语synchronied锁的冰山一角synchronized是用来干啥的,怎么用?synchronized是用来干啥的??synchronized怎么用??分析synchronized上锁的过程java中的对象头关于可重入锁是如何记录重入次数呢?锁的升级过程------>>>>>初始阶段锁升级阶段偏向锁升级为轻量级锁轻量级锁升级为重量级锁有了自旋锁为什么还需要重量级锁?重量级锁的实现----&.原创 2021-10-11 20:13:39 · 3158 阅读 · 0 评论 -
多线程与高并发第五节,课堂知识小结21.08.14(更新)--锁的问题
再多线程与高并发这一学习阶段最重要的就是对锁的认识.上一篇文章提及了锁的一些知识,这篇文章专门时对锁的练习的;来看Java中常见的锁—class BuyTickets implements Runnable { static int ticketnum = 8;//现在只剩8张票了, //假设现在有三个窗口同时买票,每个窗口有200人在排队抢票 @Override public void run() { for (int i = 1; i <.原创 2021-08-10 20:58:23 · 130 阅读 · 0 评论 -
一个简单的顾名思义类-----Exchanger的应用
Exchanger的应用Exchanger类的基本信息继承和实现关系类的方法构造方法常用方法演示代码---Exchanger类的基本信息继承和实现关系public class Exchanger extends Object-------- 泛型类线程可以在成对内配对和交换元素的同步点。每个线程在输入exchange方法时提供一些对象,与合作者线程匹配,并在返回时接收其合作伙伴的对象。交换器可以被视为一个的双向形式SynchronousQueue 。 交换器在诸如遗传算法和管道设计的应用中原创 2021-08-20 20:49:41 · 132 阅读 · 0 评论 -
多线程与高并发第六节,课堂知识小结21.08.10--线程中断问题
先看代码–class BuyTickets extends Thread { @Override public void run() { for (int i = 1; i < 20; i++) { System.out.println(i); if (i == 5) { try { Thread.sleep(20000);//线程休眠20秒原创 2021-08-10 14:21:34 · 126 阅读 · 0 评论 -
高并发中Lock锁与Sychronized的对比21.10.7更新
从代码中发现区别----Lock锁与Sychronized的区别Lock锁与Sychronized的区别lock锁案例synchronized 锁案例lock锁中的方法lock.lockInterruptibly()方法lock.trylock()方法lock锁案例lock锁案例----public class ThreadDemo01 { public static void main(String[] args) { Lock lock = new ReentrantL原创 2021-08-18 09:37:54 · 131 阅读 · 0 评论 -
多线程与高并发第一节,课堂知识小结21.08.01
多线程与高并发认识并发与并行入门程序分析(打印---HelloWorld)线程之间是如何抢占CPU资源的?自定义线程的执行认识并发与并行并发是针对一个CPU来讲,“同一时间”执行多个任务–实质上是划分时间片,由于时间很短给人的感觉是是同时执行的;并行是针对多个CPU来讲的,同时执行多个任务(一个CPU执行一个),这是真正意义上的同时执行;入门程序分析(打印—HelloWorld)class Car{ public void drive(){ System.out.prin原创 2021-08-01 16:05:42 · 137 阅读 · 0 评论 -
论java中new一个对象的半初始化状态
你知道你刚刚new出来的对象有哪几种状态吗?原创 2021-10-08 22:32:27 · 818 阅读 · 0 评论