上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 40 下一页
摘要: 什么是等待唤醒机制 这是多个线程间的一种协作机制。谈到线程我们经常想到的是线程间的竞争( race ),比如去争夺锁,但这并不是故事的全部,线程间也会有协作机制。 就好比在公司里你和你的同事们,你们可能存在在晋升时的竞争,但更多时候你们更多是一起合作以完成某些任务。 就是在一个线程进行了规定操作后, 阅读全文
posted @ 2022-07-09 19:13 淤泥不染 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 等待唤醒案例:线程之间的通信: 创建一个顾客线程(消费者):告知老板要的包子的种类和数量,调用wait方法,放弃cpu的执行,进入到WALITTNG状态(无限等待) 创建一个老板线程(生产者):花了5秒做包子,做好包子之后,调用notify方法,唤醒顾客吃包子。 注意: 顾客和老板线程必须使用同步代 阅读全文
posted @ 2022-07-09 17:16 淤泥不染 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 我们创建了多个线程(新建状态)并调用start方法启动线程,这些线程有些抢到cpu执行权有些没有抢到,抢到的进入运行状态, 没抢到的进入阻塞状态,如果运行状态中的线程执行完毕(run()方法结束),或者调用stop()强制关闭线程,或者run()方法中产生异常,则会进入死亡状态. 阻塞状态:具有cp 阅读全文
posted @ 2022-07-09 16:06 淤泥不染 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 静态的同步方法 锁对象是谁 不能是this this是创建对象之后产生的,静态方法优先于对象 静态方法的所对象是本类class属性 》class文件对象 举例: Lock锁 从JDK 5.0开始,Java提供了更强大的线程同步机制——通过显式定义同步锁对象来实现同步。同步锁使用Lock对象充当。 R 阅读全文
posted @ 2022-07-09 15:18 淤泥不染 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 同步技术的原理: synchronized内置锁就是Java的一种重量级锁 同步代码块和同步方法的好处:解决了多个线程同时被访问共享数据时的线程安全问题。 弊端:非常消耗资源,效率较低 作用:它可以解决并发编程中出现多个线程同时访问一个共享。 说明:synchronized是一个隐式锁,也是jvm内 阅读全文
posted @ 2022-07-09 15:00 淤泥不染 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 注意: 线程安全问题是不能产生的,我们可以让一个线程在访问共亨数据的时候无论是杏失去了cpu的执行权;让其他的线程只能等待.等特当前线程卖完票,其他线程在进行卖票 图: 线程安全问题同步代码块 通过代码块中的锁对象,可以使用任意的对象 但是必须保证多个线程使用的多对象是同一个 锁对象的作用: 把同步 阅读全文
posted @ 2022-07-09 14:21 淤泥不染 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 线程安全问题概述 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行结果是一样的,而且其他变量的值和预期的结果也是一样的,就是线程安全的。 图: 单线程程序 多线程没有共享数据 多线程共享数据 线程安全的代码实现 举例: 搜索 复制 阅读全文
posted @ 2022-07-08 16:20 淤泥不染 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 实现RunnabLe接口创建多线程程序的好处: 避免了单继承的局限性 一个类只能继承一个类(一个人只能有一个亲爹),类继承了Thread类就不能继承其他的类 实现了Runnable接口,还可以继承其他的类,实现其他的接口 增强了程序的扩展性,降低了程序的耦合性(解耦)实现Runnable接口的方式, 阅读全文
posted @ 2022-07-08 15:35 淤泥不染 阅读(114) 评论(0) 推荐(0) 编辑
摘要: public static void sleep(Long millis):使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。毫秒数结束之后,线程继卖执行 sleep(简称线程休眠) 举例: 举例: public static void main(String[] args) throws I 阅读全文
posted @ 2022-07-08 15:05 淤泥不染 阅读(41) 评论(0) 推荐(0) 编辑
摘要: Thread类的常用方法_获取线程名称的方 构造方法: 获取线程的名称: 1.使用Thread类中的方法getName(),String getName()返回该线程的名称。 2.可以先获取到当前正在执行的线程,使用线程中的方法getName()获取线程的名称,static Thread curre 阅读全文
posted @ 2022-07-08 14:26 淤泥不染 阅读(56) 评论(0) 推荐(0) 编辑
上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 40 下一页