07 2020 档案

摘要:Exchanger可以在对中对元素进行配对和交换的线程的同步点。每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象。Exchanger 可能被视为 SynchronousQueue 的双向形式。Exchanger 可能在应用程序(比如遗传算法和 阅读全文
posted @ 2020-07-31 14:02 纵码万水千山 阅读(128) 评论(0) 推荐(0) 编辑
摘要:一、CyclicBarrier CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在 阅读全文
posted @ 2020-07-31 14:01 纵码万水千山 阅读(172) 评论(0) 推荐(0) 编辑
摘要:java 中Semaphere可类比操作系统信号量,硬件资源如IO、内存、磁盘等都是有固定量的,多个程序需要竞争这些资源,没有资源就需要被挂起。 一、类和方法摘要 构造函数: public Semaphore(int permits):创建具有给定的许可数和非公平的公平设置的 Semaphore。  阅读全文
posted @ 2020-07-29 23:33 纵码万水千山 阅读(167) 评论(0) 推荐(0) 编辑
摘要:前面我们讲到了synchronized;那么这节就来将lock的功效。 一、locks相关类 锁相关的类都在包java.util.concurrent.locks下,有以下类和接口: | AbstractOwnableSynchronizer | AbstractQueuedLongSynchron 阅读全文
posted @ 2020-07-29 00:20 纵码万水千山 阅读(151) 评论(0) 推荐(0) 编辑
摘要:Callable与Runnable 先说一下java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法: public interface Runnable { public abstract void run(); } 由于run()方法返回值为void类型,所以在执 阅读全文
posted @ 2020-07-28 23:43 纵码万水千山 阅读(223) 评论(0) 推荐(0) 编辑
摘要:随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。本文主要简单介绍了分布式系统的概念、分布式系统的特点、常用的分布式方案以及分 阅读全文
posted @ 2020-07-22 23:59 纵码万水千山 阅读(257) 评论(0) 推荐(0) 编辑
摘要:当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2。因为A和B线程在更新变量i的时候拿到的i都是1,这就是线程不安全的更新操作,通常我们会使用synchronized来解决这个问 阅读全文
posted @ 2020-07-22 23:33 纵码万水千山 阅读(248) 评论(0) 推荐(1) 编辑
摘要:多个线程访问共享对象和数据的方式 如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,买票系统就可以这么做。 如果每个线程执行的代码不同,这时候需要用不同的Runnable对象,有如下两种方式来实现这些Runnable对象之间的数据共享: 阅读全文
posted @ 2020-07-22 22:58 纵码万水千山 阅读(1135) 评论(1) 推荐(1) 编辑
摘要:为什么用线程池 1.创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 例如: 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 如果T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了! 正好,线程池缓存线程,可用已有的闲置线程来执行新 阅读全文
posted @ 2020-07-20 23:06 纵码万水千山 阅读(162) 评论(0) 推荐(0) 编辑
摘要:java中的守护程序线程是一个服务提供程序线程,它为用户线程提供服务。 它的生命依赖于用户线程,即当所有用户线程都死掉时,JVM会自动终止该线程。 有许多java守护程序线程自动运行,例如 gc,finalizer 等 通过在命令提示符下键入jconsole来查看所有详细信息。 jconsole工具 阅读全文
posted @ 2020-07-19 23:02 纵码万水千山 阅读(120) 评论(0) 推荐(0) 编辑
摘要:一、概念 可以将每个线程用到的数据与对应的线程号存放到一个map集合中,使用数据时从这个集合中根据线程号获取对应线程的数据,就可以实现线程范围内共享相同的变量。 二、代码 Runnable中的run()方法里面执行Thread.currentThread()都会对应当前Runnable对应的线程,因 阅读全文
posted @ 2020-07-19 22:50 纵码万水千山 阅读(972) 评论(0) 推荐(0) 编辑
摘要:本文讲解CAS机制,主要是因为最近准备面试题,发现这个问题在面试中出现的频率非常的高,因此把自己学习过程中的一些理解记录下来,希望能对大家也有帮助。 什么是悲观锁、乐观锁?在java语言里,总有一些名词看语义跟本不明白是啥玩意儿,也就总有部分面试官拿着这样的词来忽悠面试者,以此来找优越感,其实理解清 阅读全文
posted @ 2020-07-19 22:48 纵码万水千山 阅读(235) 评论(0) 推荐(0) 编辑
摘要:方式一:全局配置 可以添加阿里云的镜像到maven的setting.xml配置中,这样就不需要每次在pom中,添加镜像仓库的配置,在mirrors节点下面添加子节点: <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus ali 阅读全文
posted @ 2020-07-08 20:40 纵码万水千山 阅读(12471) 评论(0) 推荐(0) 编辑
摘要:Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字。 volatile,从字面上说是易变的、不稳定的,事实上,也确实如此,这个关键字的作用就是告诉编译器,只要是被此关键字修饰的变量都是易变的、不稳定的。那为什么是易变的呢?因为 阅读全文
posted @ 2020-07-08 00:25 纵码万水千山 阅读(203) 评论(0) 推荐(0) 编辑