摘要: 从JDK5.0开始,Java提供了更强大的线程同步机制——通过显式定义同步锁对象来实现同步。同步锁使用Lock对象充当 java.util.concurrent.locks.Lock接口是控制多个线程对共享资源进行访问的工具。锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开 阅读全文
posted @ 2022-05-15 02:38 Epiphany8Z 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 死锁: 多个线程各自占有一些共享资源﹐并且互相等待其他线程占有的资源才能运行﹐而导致两个或者多个线程都在等待对方释放资源﹐都停止执行的情形﹒某一个同步块同时拥有“两个以上对象的锁”时,就可能会发生“死锁”的问题. 产生死锁的四个必要条件: 互斥条件:一个资源每次只能被一个进程使用。 请求与保持条件: 阅读全文
posted @ 2022-05-15 02:30 Epiphany8Z 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 同步方法: 由于我们可以通过private关键字来保证数据对象只能被方法访问,所以我们只需要针对方法提出一套机制,这套机制就是synchronized关键字,它包括两种用法:synchronized方法和synchronized块. 同步方法:public synchronized void met 阅读全文
posted @ 2022-05-15 01:55 Epiphany8Z 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 1. 不安全买票 public class UnSafeBuyTicket { public static void main(String[] args) { BuyTicket buyTicket = new BuyTicket(); new Thread(buyTicket,"张三").sta 阅读全文
posted @ 2022-05-15 01:19 Epiphany8Z 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 并发:同一个对象被多个线程同时操作 现实生活中,我们会遇到"同一个资源,多个人都想使用”的问题,比如,食堂排队打饭,每个人都想吃饭,最天然的解决办法就是:排队,一个个来。 处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象.这时候我们就需要线程同步,线程同步其实就是一种等待机制, 阅读全文
posted @ 2022-05-15 00:35 Epiphany8Z 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 线程分为用户线程和守护线程 虚拟机必须确保用户线程执行完毕,如main()线程 虚拟机不用等待守护线程执行完毕,如后台记录操作日志,监控内存,垃圾回收:gc()等。 public class ThreadDaemon { public static void main(String[] args) 阅读全文
posted @ 2022-05-15 00:26 Epiphany8Z 阅读(32) 评论(0) 推荐(0) 编辑
摘要: Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行。 线程的优先级用数字表示,范围从1~10. Thread.MIN_PRIORITY = 1; Thread.MAX_PRIORITY = 10; Thread.NORM_PRIORIT 阅读全文
posted @ 2022-05-15 00:12 Epiphany8Z 阅读(26) 评论(0) 推荐(0) 编辑