多线程
Programmie
这个作者很懒,什么都没留下…
展开
-
ConcurrentHashMap:学习总结
ConcurrentHashMap JDK 1.7 JDK 1.7 是一个Segment数组 总览: Segment内部有一个HashEntry[] table 的字段 Segment数组大小默认是16 Segment由DEFAULT_CONCURRENT_LEVEL决定,去找比DEFAULT_CONCURRENT_LEVEL大的2次幂 HashEntry由DEFAULT_CONCURRENT_LEVEL和initialCapacity决定。通过两者相除后再向上取整 每个Segment对象内原创 2020-07-30 11:43:11 · 343 阅读 · 1 评论 -
JMM 理解
JMM 理解 read:将主内存中的数据读取出来 load:紧跟在read之后,将数据写入到线程内部的私有数据副本中 use:线程内部的方法将调用数据副本中的数据进行操作 assign:如果数据副本的值在方法中发生改变,那么又会调用assign将其复制给数据副本中的对应变量 store:会先在主内存中开辟一块空间,将变量值传入到主内存中 write:在这一步中才会将数据值真正的写入到主内存中 lock:将一个主内存中的变量设置会线程私有 unlock:将一个线程私有的变量释放,可以令其他线程访问到原创 2020-06-15 09:27:35 · 171 阅读 · 0 评论 -
记录一下ktor client的一个坑:java.net.BindException: Address already in use: no further information
记录一下用ktor client的时候遇到的一个坑。这是我的代码 @Scheduled(fixedRate = 10L) //这里httpClient是ktor client,另一个client是OPC UA milo的client private fun collectingCoordData() = runBlocking { val time = measureTimeMillis { val absoluteValues = async(Dis原创 2020-05-20 14:53:24 · 1540 阅读 · 0 评论 -
ktor client:支持协程的HTTP工具库
最近用kotlin开发服务端,用了很多库,像Spring boot的RestTemplate,okhttp还有retrofit,觉得retrofit很好用。但是,在用retrofit来实现协程的时候,遇到了一个问题 如图所示,提示Inappropriate blocking method call,说这种协程的使用方式是不合适的。我在Stack Overflow上搜了一下,发现如下解答 也就是说这个execute方法会阻塞当前线程,因此不能令线程挂起,导致协程失效,而这个execute的原方法中: @O原创 2020-05-19 19:50:20 · 2981 阅读 · 0 评论 -
Netty 出站入站机制详解
前段时间在B站学习Netty,讲到出站入站的机制时一直没搞明白到底是怎么弄的,直到开始讲源码部分时才终于搞明白。 先来看看Netty官方有关出站入站机制的解释: 按照图片的理解,则是在通道中,每次出现读事件时,会从头至尾依次调用Inbound即入站方法处理; 而触发写事件时,则会从尾到头依次调用outbound即出站方法处理。 这里会给人一种错觉,那就是netty在内部维护了两个单向链表实现出站...原创 2020-05-03 16:41:51 · 4291 阅读 · 4 评论 -
Java多线程:对于Thread.join()的理解
以前一直搞不明白Thread当中的join到底是怎么用的,今天自己写了个小例子过后总算是有点眉目。 先来看JDK官方文档对于join是怎么描述的: // 等待该线程终止。 public final void join() throws InterruptedException 还有几个重载的方法就不多赘述,这样描述其实挺让人难懂的,所以还是看例子吧 package concurrent; im...原创 2020-05-02 10:05:58 · 139 阅读 · 0 评论