感谢 ♥ 作者
先不感谢了
上一页 1 ··· 8 9 10 11 12 13 14 15 下一页
摘要: 共享锁【S锁】又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。 排他锁【X锁】又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A, 阅读全文
posted @ 2017-09-23 20:43 MJyc 阅读(206) 评论(0) 推荐(0) 编辑
摘要: Read uncommitted(未授权读取、读未提交): 如果一个事务已经开始写数据,则另外一个事务则不允许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。 避免了更新丢失,却可能出现脏读。也就是说事务B读取到了事务A未提交的数据。 Read committed(授权 阅读全文
posted @ 2017-09-23 20:04 MJyc 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 类别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) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 下一页