随笔分类 -  多线程

摘要:Lock是显示锁(手动开启和关闭锁,别忘记关闭锁) synchronized是隐式锁,出了作用域自动释放 Lock只有代码块锁,synchronized锁有代码锁和方法锁 使用Lock锁,jvm将花费更少的时间来调度线程,性能更好。并且具有更好的扩展性(有很多的子类) Synchronized 内置 阅读全文
posted @ 2022-04-30 16:40 小罗要有出息 阅读(41) 评论(0) 推荐(0) 编辑
摘要:Lock锁 从JDK5.0开始,java提供了更加强大的线程同步机制-通过显示定义同步锁对象,来实现同步。同步锁使用lock对象充当 java.util.concurrent.locks.Lock接口是控制多个线程对共享资源经行访问的工具。锁提供了对共享资源的独占访问,每次只能有一个线程对lock对 阅读全文
posted @ 2022-04-30 16:35 小罗要有出息 阅读(42) 评论(0) 推荐(0) 编辑
摘要:死锁是指:两个或两个以上的进程在执行过程中,由于竞争资源,或者由于彼此通信而造成的一种阻塞的现象。若无外力作用。他们都无法运行下去 小孩抢玩具(死锁) package com.Luoking.Thread; public class Deadlock { public static void mai 阅读全文
posted @ 2022-04-30 12:55 小罗要有出息 阅读(52) 评论(0) 推荐(0) 编辑
摘要:同步代码块 synchronized(任意类型的对象,相当于一把锁){代码块}: 当线程抢到了CPU资源,CPU会执行完当前线程的代码,CPU再进入下一次被争夺中(防止了当前线程代码块还未执行完,就进入下一个线程,导致数据紊乱) synchronized (account){ //同步锁,锁的对象应 阅读全文
posted @ 2022-04-30 12:12 小罗要有出息 阅读(60) 评论(0) 推荐(0) 编辑
摘要:线程同步指 //当有一个线程在对内存进行操作时, //其他线程都不可以对这个内存地址进行操作, //直到该线程完成操作, //其他线程才能对该内存地址进行操作, //而其他线程又处于等待状态 并发: 同一个对象被多个线程同时操作 解决线程同步安全问题: 队列+锁 队列就是排队,等待,当有线程操作同一 阅读全文
posted @ 2022-04-29 21:51 小罗要有出息 阅读(23) 评论(0) 推荐(0) 编辑
摘要:守护线程 线程分为用户线程和守护线程 虚拟机必须确保用户线程执行完毕 虚拟机不用等待守护线程执行完毕 守护线程:后台记录操作日志,监控日志,垃圾回收 package com.Luoking.Thread; public class ThreadDaemon { public static void 阅读全文
posted @ 2022-04-29 20:58 小罗要有出息 阅读(54) 评论(0) 推荐(0) 编辑
摘要:线程优先级 java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行 线程的优先级用数字表示,范围从1-10 Thread.MIN_PRIORITY = 1; Thread.MAX_PRIORITY = 10; Thread.MORM_PRI 阅读全文
posted @ 2022-04-29 20:40 小罗要有出息 阅读(44) 评论(0) 推荐(0) 编辑
摘要:观测线程状态 package com.Luoking.Thread; public class ThreadState { public static void main(String[] args) throws InterruptedException { //线程逻辑 Thread threa 阅读全文
posted @ 2022-04-29 20:16 小罗要有出息 阅读(17) 评论(0) 推荐(0) 编辑
摘要:线程强制执行 join join合并线程,等待线程执行完成以后,再执行其他线程,其他线程阻塞 package com.Luoking.Thread; public class ThreadJoin implements Runnable{ //线程体方法 @Override public void 阅读全文
posted @ 2022-04-29 19:50 小罗要有出息 阅读(19) 评论(0) 推荐(0) 编辑
摘要:线程礼让,可以解释为当一个线程被cpu执行,并且这个线程中有礼让程序,此时线程会自己主动让出cpu资源,与其他线程重新竞争 package com.Luoking.Thread; //测试礼让 public class ThreadYield { public static void main(St 阅读全文
posted @ 2022-04-29 19:30 小罗要有出息 阅读(34) 评论(0) 推荐(0) 编辑
摘要:线程休眠(sleep) 特点 sleep指定当前线程阻塞的毫秒数 存在异常需要抛出 时间到达后线程进入就绪状态 可以模拟网络延时,倒计时等 每个对象都有一把锁,sleep不会释放锁 模拟网络延时 (放大问题的放大性) 模拟时间延时 package com.Luoking.Thread; import 阅读全文
posted @ 2022-04-29 12:09 小罗要有出息 阅读(76) 评论(0) 推荐(0) 编辑
摘要:线程一生的状态 线程停止 建议线程正常停止-->利用次数,不建议死循环 建议使用标志位--> 设置一个标志位 不使用stop和destory等过时或者JDK不建议使用的方法 package com.Luoking.Thread; public class deadThread implements 阅读全文
posted @ 2022-04-27 22:40 小罗要有出息 阅读(6) 评论(0) 推荐(0) 编辑
摘要:lamda表达式 避免匿名内部类定义过多 其实质属于函数式编程 (params 参数) -> express(表达式) (params 参数) -> statement(语句) (params 参数) -> {statements} 例如: new Thread(() -> System.out.p 阅读全文
posted @ 2022-04-27 18:25 小罗要有出息 阅读(24) 评论(0) 推荐(0) 编辑
摘要:package com.Luoking.Thread; public class Race implements Runnable { //定义胜利者 private static String winner; @Override public void run() { for (int i = 0 阅读全文
posted @ 2022-04-27 16:47 小罗要有出息 阅读(30) 评论(0) 推荐(0) 编辑
摘要:继承Thread(不推荐使用,具有单继承局限性) public class StartThread extends Thread{ //线程入口点 @Override public void run() { for (int i = 0; i < 1000; i++) { System.out.pr 阅读全文
posted @ 2022-04-27 16:17 小罗要有出息 阅读(63) 评论(0) 推荐(0) 编辑
摘要:并行:同一时刻,做着多个事 例如:早上8:30时,有的同学在上厕所,有的人在吃饭,有的人洗漱。这就是并行(把人表示CPU,那就是多个CPU同一时间做着不同的事) 并发:在一个时间段中,依次做着多个事 例如:我在8:00到8:30这个时间段,我依次做了,起床,穿衣服,洗漱,去食堂,吃饭。(一个CPU, 阅读全文
posted @ 2022-04-27 16:11 小罗要有出息 阅读(17) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示