上一页 1 ··· 50 51 52 53 54 55 56 57 58 ··· 65 下一页
摘要: 等待唤醒机制的三个角色:生产者、消费者、控制生产者和消费者的第三者 代码: package pojo.xc01;//用来控制生产者和消费者的执行public class Desk { //桌子上是否有面条(0:没有面条 1:有面条) //用布尔类型表示的话有一个小弊端,因为布尔类型只有两个值,只能控 阅读全文
posted @ 2023-10-28 14:31 1stzz1 阅读(35) 评论(0) 推荐(0)
摘要: 生产者和消费者完整的执行过程: 等待唤醒机制: 在Java中,等待唤醒机制是通过Object类的wait()、notify()和notifyAll()方法来实现的。这种机制通常用于多线程之间的协作,允许线程在某个条件满足或者发生变化之前等待,并在条件满足时被唤醒。 1.wait()方法: 当一个线程 阅读全文
posted @ 2023-10-28 13:22 1stzz1 阅读(84) 评论(0) 推荐(0)
摘要: 当一个线程尝试获取一个已经被其他线程锁住的锁时,它的行为取决于所使用的编程语言和锁的类型。一般情况下,有以下几种可能的行为: 1.阻塞等待:线程会被阻塞,直到锁变为可用。这是最常见的情况,通常用于互斥锁。在Java中,可以使用synchronized关键字或ReentrantLock类来实现这种行为 阅读全文
posted @ 2023-10-28 13:06 1stzz1 阅读(109) 评论(0) 推荐(0)
摘要: 死锁就是在程序当中出现了 锁的嵌套,外面一个锁,里面一个锁,就形成了死锁 死锁不是一个知识点,而是一个错误 阅读全文
posted @ 2023-10-27 21:24 1stzz1 阅读(17) 评论(0) 推荐(0)
摘要: 代码示例: package pojo;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Ticket extends Thread{ public s 阅读全文
posted @ 2023-10-27 21:12 1stzz1 阅读(42) 评论(0) 推荐(0)
摘要: 同步代码块 就是 把一段代码给锁起来,这样就可以解决多线程操作共享数据时带来的数据安全问题 但是如果我们想要把一个方法里面所有的代码全都锁起来,就没有必要用同步代码块了,我们可以直接把 synchronized 加在方法上,这个方法就叫做同步方法 同步方法的格式: 修饰符 synchronized 阅读全文
posted @ 2023-10-27 20:26 1stzz1 阅读(59) 评论(0) 推荐(0)
摘要: 同步代码块: 利用同步代码块把操作共享数据的代码给锁起来,让同步代码块里面的代码是轮流去执行的 格式: synchronized (锁对象) { 操作共享数据的代码 } 细节: 1. 在最初,锁的状态是默认打开的,如果有一个线程进去了,锁就会自动关闭 2. 当锁里面全部代码都执行完毕了,线程出来了, 阅读全文
posted @ 2023-10-27 19:45 1stzz1 阅读(90) 评论(0) 推荐(0)
摘要: 1. 当创建线程对象的时候,是新建状态 2. 新建完之后 调用 start()方法 就变成了就绪状态(是在调用完了 start() 方法之后才变成了就绪状态)。在就绪状态下,线程开始抢夺 CPU 的执行权。注意是正在抢,还没有抢到,没抢到就无法执行代码。所以就绪状态 有执行资格,但没有执行权(有执行 阅读全文
posted @ 2023-10-27 18:47 1stzz1 阅读(29) 评论(0) 推荐(0)
摘要: Java 中线程的优先级 最小是 1,最大是 10,默认是 5;优先级越大,抢占到 CPU 的概率越高 String getName()、void setName (String name): 如果我们没有给线程设置名字,线程的默认名字是 Thread-序号,序号是从 0 开始的,例如:Thread 阅读全文
posted @ 2023-10-27 16:53 1stzz1 阅读(26) 评论(0) 推荐(0)
摘要: 继承Thread类 和 实现Runnable接口 的这两种方式 无法获取到多线程的结果 实现Callable接口 的方式 可以获取到多线程运行的结果 阅读全文
posted @ 2023-10-27 16:15 1stzz1 阅读(19) 评论(0) 推荐(0)
上一页 1 ··· 50 51 52 53 54 55 56 57 58 ··· 65 下一页