摘要: ReentrantLock(可重入锁)类实现了Lock,它拥有与synchronized 相同的并发性和内存语义,在实现线程安全的控制中,比较常用的是ReentrantLock。可以显示加锁、释放锁。 package gaoji;​import java.util.concurrent.locks. 阅读全文
posted @ 2021-07-29 09:12 清钦 阅读(186) 评论(0) 推荐(0)
摘要: 某一同步块同时拥有“两个以上的锁”时,就可能会发生“死锁”的问题。 //死锁:多个线程互相抱着对方需要的资源,然后形成僵持public class DeadLock { public static void main(String[] args) { Makeup g1=new Makeup(0," 阅读全文
posted @ 2021-07-29 09:09 清钦 阅读(123) 评论(0) 推荐(0)
摘要: public class TestJUC { public static void main(String[] args) { CopyOnWriteArrayList<String> list=new CopyOnWriteArrayList<>(); for (int i = 0; i < 10 阅读全文
posted @ 2021-07-29 09:08 清钦 阅读(31) 评论(0) 推荐(0)
摘要: 同步方法:我们只需要针对方法提出一套机制,这套机制就是synchronized关键字,它包括两种用法:synchronized方法和synchronized块 同步方法:public synchronized void method(int args){} 缺陷:若将一个大的方法申明为synchro 阅读全文
posted @ 2021-07-29 09:07 清钦 阅读(364) 评论(0) 推荐(0)
摘要: 多个线程操作同一个资源 并发:同一对象被多个线程同时操作 线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用。 形成条件:队列+锁 锁机制synchronized 阅读全文
posted @ 2021-07-29 09:04 清钦 阅读(30) 评论(0) 推荐(0)
摘要: 1.不安全买票 package syn;//不安全买票public class UnsafeBuyTicket { public static void main(String[] args) {​ BuyTicket buyTicket=new BuyTicket(); new Thread(bu 阅读全文
posted @ 2021-07-29 09:04 清钦 阅读(93) 评论(0) 推荐(0)
摘要: 线程分为用户线程和守护线程。 虚拟机必须确保用户线程执行完毕。 虚拟机不用等待守护线程执行完毕 public class TestDaemon {​ public static void main(String[] args) { God god=new God(); You you=new You 阅读全文
posted @ 2021-07-29 09:03 清钦 阅读(31) 评论(0) 推荐(0)
摘要: Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行。 线程的优先级用数字表示,范围从1~10 Thread.MIN_PRIORITY=1; Thread.MAX_PRIORITY=10; Thread.NORM_PRIORITY=5; 阅读全文
posted @ 2021-07-29 08:45 清钦 阅读(421) 评论(0) 推荐(0)
摘要: NEW new状态 RUNNABLE 运行状态 TERMINATED 死亡状态 //观测测试线程状态public class TestState { public static void main(String[] args) throws InterruptedException { Thread 阅读全文
posted @ 2021-07-29 08:43 清钦 阅读(28) 评论(0) 推荐(0)
摘要: Join合并线程,待此线程执行完成后,再执行其他线程,其他线程阻塞 可以想象成插队 public class TestJoin implements Runnable { @Override public void run() { for (int i = 0; i < 1000; i++) { S 阅读全文
posted @ 2021-07-29 08:41 清钦 阅读(37) 评论(0) 推荐(0)
摘要: 线程礼让,让当前正在执行的线程暂停,但不阻塞。 将线程从运行状态转为就绪状态。 让CPU重新调度,礼让不一定成功,看CPU心情。 ​ public static void main(String[] args) { MyYield myYield= new MyYield();​ new Threa 阅读全文
posted @ 2021-07-29 08:40 清钦 阅读(35) 评论(0) 推荐(0)