【线程,2021最新阿里Java高级面试题总结

本文深入探讨了Java中线程间的协作机制,重点讲解了wait和notify方法的使用。当线程发现条件不满足时,应当释放锁并等待其他线程的通知。wait方法使线程进入等待状态,释放锁,而notify方法则唤醒一个等待的线程。内容包括wait和notify的使用场景、操作步骤以及内核层面的分析。面试后进行复盘,查漏补缺,提升技术水平。
摘要由CSDN通过智能技术生成

那么这种情况如何解决呢?

那就是该线程发现条件还没有成熟(也就是发现ATM机没钱的时候),就应该释放锁,并且等待,知道其他线程通知说条件已经成熟了,然后把该线程唤醒(也就是运钞扯来了,并且把钱放进ATM机了,或者是后面的人进去存钱,存好了之后跟他说我刚刚存钱了,你可以进去取钱了)

关键在于需要根据实际情况来手动控制线程之间的先后顺序。(虽然线程的执行顺序是由调度器实现的,但是有时候要控制先后顺序的hi后就需要手动实现)——这就引出了等待集

等待集的核心操作主要有两个

1.等待(wait方法)

2.通知(notify方法)

在这里插入图片描述

notify用法


import java.util.Scanner;



public class ThreadDemo12 {

    private static Object object = new Object();

    public static class MyThread extends  Thread{

        @Override

        public void run() {

            synchronized (object){

                try {

                    object.wait();

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

            }

            for (int i = 10; i < 20; i++) {

                System.out.println(i);

            }

        }

    }

    public static void main(String[] args){

        Thread thread = new MyThread();

        thread.start();

        Scanner scanner = new Scanner(System.in);

        System.out.println("我不输入,Thread线程就不会运行");

        scanner.nextInt();

        synchronized (object){

            object.notify();

        }

    }

} 

注意

调用wait的前提是发现当前操作的条件不满足,要想知道条件满不满足,就需要先能够访问到资源(先获取到锁)

wait必须在同步代码块中才能使用,否则就会出现异常

wait方式做了三件事:

1.先释放锁(前提是已经获取到锁)

2.等待通知(等待其他线程调用notify方法,把它唤醒)

3.收到通知后会重新尝试获取锁

在这里插入图片描述

从内核角度分析

在这里插入图片描述

面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

重要的事说三遍,关注+关注+关注!

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

image.png

更多笔记分享

**

重要的事说三遍,关注+关注+关注!

[外链图片转存中…(img-v6obPloi-1631087754381)]

[外链图片转存中…(img-oeK7Ys9H-1631087754382)]

更多笔记分享

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值