摘要: 问题:线程安全问题的主要诱因是什么? 》 1、存在共享数据(也称临界资源) 2、存在多条线程共同操作这些共享数据 解决问题的根本方法: 同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作(串行) 互斥锁的特性 1、互斥性:在同一时间只允许一个线程持有某个对 阅读全文
posted @ 2019-04-07 15:56 邂逅那青春-VING 阅读(142) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2019-04-07 14:51 邂逅那青春-VING 阅读(89) 评论(0) 推荐(0)
摘要: 已经被抛弃的方法 1、通过调用stop()方法停止线程(这个方法太暴力而且不安全的,为什么呢?比如说线程A调用线程B的stop方法,去停止线程B。这个时候线程A这个时候并不知道线程B当前是执行情况,这种突然间的停止,会导致线程B的一些清理工作无法完成,而且会导致线程B会马上释放锁,会引发数据不同步的 阅读全文
posted @ 2019-04-07 14:26 邂逅那青春-VING 阅读(222) 评论(0) 推荐(0)
摘要: 当调用Thread.yield()函数时,会给线程调度器一个当前线程愿意让出CPU使用的暗示,但是线程调度器可能会忽略这个暗示 阅读全文
posted @ 2019-04-07 14:05 邂逅那青春-VING 阅读(136) 评论(0) 推荐(0)
摘要: 两个概念: 1、锁池EntryList 2、等待池 WaitSet 注意:锁池和等待池都是针对对象的 问题:notify和notifyall的区别? 》1、notifyAll会让所有处于等待池的线程全部进入锁池去竞争获取锁的机会 2、notify只会随机选取一个处于等待池的线程进入锁池去竞争获取锁的 阅读全文
posted @ 2019-04-07 10:57 邂逅那青春-VING 阅读(700) 评论(0) 推荐(0)
摘要: 基本的差别 1、sleep 是Thread 类的方法,wait 是Object类中定义的方法 2、sleep()方法可以在任何地方使用 3、wait()方法只能在synchronized方法中使用,或者在synchronized块中使用 最主要的本质区别: 1、Thread.sleep 只会让出CP 阅读全文
posted @ 2019-04-07 10:30 邂逅那青春-VING 阅读(152) 评论(0) 推荐(0)
摘要: 六种: 1、新建(New):创建后尚未启动的线程的状态 2、运行(Runnable):包含Running 和Ready 3、无限期等待(Waiting):不会被分配CPU执行时间,需要显式被唤醒 没有设置Timeout参数的Object.wait()方法 没有设置Timeout参数的Thread.j 阅读全文
posted @ 2019-04-07 00:50 邂逅那青春-VING 阅读(136) 评论(0) 推荐(0)