
多线程
热爱正能量
尽我绵力,回馈社区。
展开
-
多线程基础
同步:调用者必须等到方法调用返回后,才能继续后续的行为异步:异步就像发送一个消息传递,方法调用就会立即返回,调用者可以继续后续的操作。异步会在另外一个线程中真实的执行,如果需要返回结果,那么后续完成后会通知调用者。 并发concurrency 和并行 parallelism并行:并行是多个任务是真实的同时执行并发:并发的话任务是在交替执行,一会执行任务a,一...原创 2018-10-17 10:38:39 · 140 阅读 · 0 评论 -
java join使用
比如main是主线程,那么如果在main里面启动了A线程的join方法,那么主线程即等待A线程运行结束才运行。主线程要是调用join方法,那么该线程将一直等待。因为是自己等待自己。 join()方法还有带超时限制的重载版本。 例如t.join(5000);则让线程等待5000毫秒,如果超过这个时间,则停止等待,变为可运行状态。程序是网上收集的。public class...原创 2018-10-17 11:49:14 · 296 阅读 · 0 评论 -
Java wait,notify, notifyAll, suspend,resume
一个线程调用了object.wait() ,那么会进入object的等待队列。这个队列可能有很多线程同时等待某个对象。当notify被调用的时候,它会从这个队列中随机选一个线程,唤醒它,这个完全是随机的。notifyAll()是唤醒所有等待的。wait,notify,notifyall方法使用的条件,必须再synchronzied语句中,因为需要获得目标对象的一个监视器。为什么...原创 2018-10-17 12:01:28 · 293 阅读 · 0 评论 -
bio,nio,aio的理解
先上几个图BIO:线程发起IO请求,不管内核是否准备好IO操作,从发起请求起,线程一直阻塞,直到操作完成。如下图: NIO(reactor模型):线程发起IO请求,立即返回;内核在做好IO操作的准备之后,通过调用注册的回调函数通知线程做IO操作,线程开始阻塞,直到操作完成。如下图: AIO(proactor模型):线程发起IO请求,立即返回;内存...原创 2018-10-22 14:31:47 · 1505 阅读 · 0 评论 -
锁的优化以及注意事项
1.减少锁持有的时间。只在有必要时进行同步。2.减少锁的粒度分割数据结构concurrentHashMap对应不同的区段segment进行加锁,减少锁锁定的范围。concurrentHashMap 首先使用无锁的方式求和。如果失败了那么就使用加锁的方式求和。(先获取所有的锁,然后再求和,然后再释放)3.使用读写锁替换独占锁4.锁分离如果将读写锁的思想做进一步的延申,...原创 2018-10-30 17:17:28 · 199 阅读 · 0 评论 -
ReadWriteLock读写锁
ReadWriteLock管理的是一组锁,一个是读锁,一个是写锁。当前两个锁是同时使用的。其实很多人能理解写锁,因为写锁的话,写如果并发的话,那就出现脏数据。不过为什么会存在读锁?读为什么要锁?其实数据有完整性。比如:public class Man { public String name = "0"; public String age = "1...原创 2018-10-30 19:20:13 · 542 阅读 · 0 评论