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 · 134 阅读 · 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 · 211 阅读 · 1 评论 -
处理线程安全问题
问题:以售票为例,卖票过程中出现重票、错票,就是出现了线程的安全问题原因:某个线程操作车票的过程中,尚未操作完成时,其他线程参与进来,也操作车票。synchronized(同步监视器){ //需要被同步的代码}说明:1.操作共享数据的代码,即为需要被同步的代码 2.共享数据:多个线程共同操作的变量。比如票的数量 3.同步监视器。俗称:锁。任何一个类的对象,都可以充当锁要求:多个线程必须要共用同一把锁补充: 1.在实现Runnable接口创建多线程的方式中,我们可以考虑使用this原创 2021-01-16 13:11:45 · 182 阅读 · 1 评论