![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
AC它真的很香
看心情写博客 | 健忘小天才
展开
-
线程通信
例子:使用两个线程打印1-100,线程1,线程2 交替打印 涉及到的3个方法: wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。 notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的。 notifyAll():一旦执行此方法,就会唤醒所有被wait的线程。 说明: 1.wait(),notify(),notifyAll()三个方法必须使用在同步代码块或同步方法中。 2.wait(),notify(),notifyAll()三个方法原创 2021-01-16 15:27:27 · 91 阅读 · 0 评论 -
Lock锁解决线程安全问题
Lock可以手动地控制同步 package Main; import java.util.concurrent.locks.ReentrantLock; public class Window implements Runnable { private int ticket=100; private ReentrantLock lock =new ReentrantLock();//实例化ReentrantLock @Override public void run()原创 2021-01-16 14:55:18 · 178 阅读 · 1 评论 -
处理线程安全问题
问题:以售票为例,卖票过程中出现重票、错票,就是出现了线程的安全问题 原因:某个线程操作车票的过程中,尚未操作完成时,其他线程参与进来,也操作车票。 synchronized(同步监视器){ //需要被同步的代码 } 说明:1.操作共享数据的代码,即为需要被同步的代码 2.共享数据:多个线程共同操作的变量。比如票的数量 3.同步监视器。俗称:锁。任何一个类的对象,都可以充当锁 要求:多个线程必须要共用同一把锁 补充: 1.在实现Runnable接口创建多线程的方式中,我们可以考虑使用this原创 2021-01-16 13:11:45 · 153 阅读 · 1 评论