随笔分类 -  一步一步学多线程

摘要:实现方式 Lock是代码级别的,synchronized是JVM级别的 公平 Lock可以是公平所,也可以是不公平锁,默认是非公平锁,synchronized是非公平锁 释放 Lock的释放必须手动调用unlock()方法,而synchronized在代码出了代码块或方法之后就会自动释放锁。 等待中 阅读全文
posted @ 2017-08-21 11:13 一步一步学 阅读(677) 评论(0) 推荐(0)
摘要:并发编程的两个关键问题 1、 线程间通信 常见的两种交换信息的机制 A、 共享内存:读写内存中的公共状态来隐式通信 B、 消息传递:无公共状态,通过发送消息来显示进行通信。 2、线程间同步 用以控制不同线程间操作发生的相对顺序的机制 A、 共享内存下的通信机制,这里必须进行显示同步 B、 消息传递的 阅读全文
posted @ 2017-08-21 10:01 一步一步学 阅读(125) 评论(0) 推荐(0)
摘要:当线程执行请求synchronized方法或块时,monitor会设置几个虚拟逻辑数据结构来管理这些多线程。 请求的线程会首先被加入到线程排队队列中,线程阻塞,当某个拥有线程锁的线程unlock之后,则排队队列里的线程竞争上岗(synchronized是不公平竞争锁),如果运行的线程调用对象wait 阅读全文
posted @ 2017-08-19 15:53 一步一步学 阅读(127) 评论(0) 推荐(0)
摘要:上网查看了很多篇ThreadLocal的原理的博客,上来都是文字一大堆,费劲看了半天,大脑中也没有一个模型,想着要是能够有一张图明确表示出来ThreadLocal的设计该多好,所以就自己看了源码,画了一张图出来,立刻清晰不少。 根据源码代码理清ThreadLocal结构 通过上面的代码可以看出来,在 阅读全文
posted @ 2017-08-17 21:42 一步一步学 阅读(679) 评论(0) 推荐(1)
摘要:在执行定时任务的时候可以用Timer来实现,现在小编对学到的进行一次总结,先来看一个demo 这段代码的意思是,先建一个Timer,Timer开始执行的时间是” 2017-08-17 11:18:00”。 Timer重复执行 上述代码Timer只会执行一次,如果我们想让定时任务每隔一段时间就执行呢? 阅读全文
posted @ 2017-08-17 15:37 一步一步学 阅读(860) 评论(1) 推荐(0)