java内存模型(JMM)

1、并发编程的两大问题:多线程之间如何通信以及多线程之间如何同步

2、线程之间的通信机制包含:共享内存和消息传递

3、保证现成的安全是在承接上次线程写完之后再读

4、(面试点)java线程的通信方式:

①、volatile

读锁,轻锁,修饰变量的。写后读,只保证读一定是正确的,但是不保证写。

应用场景:volatile只读变量是正确的,多线程下的i++,操作是会发生错误的

②等待/通知机制

wait()和notify()机制

③、join()

要想让主线程在线程之后执行,要使用join函数,让之后的线程在该线程之后在执行

④、theadLocal(map集合)

线程之内的才有效,如果A线程放入ThreadLocal变量,那么只有线程A的方法才能访问到ThreadLocal内的变量,而线程B线程无法访问ThreadLocal内的变量

5、伪代码注释@override表示重写

  1. 可以当注释用,方便阅读;
  2. 编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。

6、对象.wait()进入等待状态,进入等待前必须先持有锁,让其他的线程进入阻塞态

进入等待的线程不会参与竞争,如果没有被唤醒,是不会参与竞争的。

7、同步队列:竞争锁失败后,线程会进入同步队列,当锁释放时还是会去竞争锁

阻塞队列:就算所有的进程都结束了,但是没有被唤醒,是不会去参与竞争锁的。

8、wait  进入等待状态, 会释放锁

sleep 进入睡眠状态, 不会释放锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值