感谢 ♥ 作者
先不感谢了
摘要: 类别synchronizedLock 存在层次 Java的关键字,在jvm层面上 是一个类 锁的释放 1、以获取锁的线程执行完同步代码,释放锁 2、线程执行发生异常,jvm会让线程释放锁 在finally中必须释放锁,不然容易造成线程死锁 锁的获取 假设A线程获得锁,B线程等待。如果A线程阻塞,B线 阅读全文
posted @ 2017-09-22 20:49 MJyc 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 注意事项: 1、死锁 2、系统资源不足 3、并发错误 4、线程泄漏 5、任务过载 线程池的作用: 在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不 阅读全文
posted @ 2017-09-22 20:45 MJyc 阅读(324) 评论(0) 推荐(0) 编辑
摘要: Daemon的作用是为其他线程的运行提供服务,比如说GC线程。其实User Thread线程和Daemon Thread守护线程本质上来说去没啥区别的,唯一的区别之处就在虚拟机的离开:如果User Thread全部撤离,那么Daemon Thread也就没啥线程好服务的了,所以虚拟机也就退出了。 守 阅读全文
posted @ 2017-09-22 20:35 MJyc 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。 sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。 2、最主要是sleep方法没有释放锁,而w 阅读全文
posted @ 2017-09-22 19:43 MJyc 阅读(293) 评论(0) 推荐(0) 编辑
摘要: String 字符串常量 不可变 使用字符串拼接时是不同的2个空间 StringBuffer 字符串变量 可变 线程安全 字符串拼接直接在字符串后追加 StringBuilder 字符串变量 可变 非线程安全 字符串拼接直接在字符串后追加 1.StringBuilder执行效率高于StringBuf 阅读全文
posted @ 2017-09-22 19:28 MJyc 阅读(110) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2017-09-22 17:17 MJyc 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 有两个容器,一个用于保存线程正在请求的锁,一个用于保存线程已经持有的锁。每次加锁之前都会做如下检测: 1)检测当前正在请求的锁是否已经被其它线程持有,如果有,则把那些线程找出来 2)遍历第一步中返回的线程,检查自己持有的锁是否正被其中任何一个线程请求,如果第二步返回真,表示出现了死锁 阅读全文
posted @ 2017-09-22 17:16 MJyc 阅读(90) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2017-09-22 15:34 MJyc 阅读(1) 评论(0) 推荐(0) 编辑
摘要: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型) ? - 表示不确定的java类型 S、U、V - 2nd、3rd、4th types 阅读全文
posted @ 2017-09-22 10:09 MJyc 阅读(189) 评论(0) 推荐(0) 编辑