高富帅:身为男人,荣辱不惊为高,心怀大爱为富,智勇双全为帅。|

huxingxin

园龄:6年10个月粉丝:26关注:0

day15-多线程2

1、 画图说明线程的生命周期,以及各状态切换使用到的方法等

image-20230102210727971

2、 同步代码块中涉及到同步监视器和共享数据,谈谈你对同步监视器和共享数据的理解,以及注意点。

理解:

同步监视器就是一把锁,当一个线程进入同步代码块并且拿到这个锁,外面的线程就进不来,只能等待当前线程运行完同步代码块,释放锁之后才能进入

共享数据就是多个线程都会进行操作的数据,会引发线程安全问题。

注意点:

同步代码块里的同步监视器,多个线程必须共用,且是唯一的。

对于多个线程处理共享数据,需要注意线程安全问题

3、sleep()和wait()的区别

sleep() 让线程睡眠一段时间,wait()让线程进入阻塞状态,直到被唤醒

sleep() 声明在Thread类中,wait()声明在java.lang.Object类中

sleep() 可以使用在任何需要使用的地方,wait()只能使用在同步代码块或同步方法中,且调用者只能是同步监视器

sleep()不会主动释放锁,调用wait() 会zhu'd

4、写一个线程安全的懒汉式

public class People {
private static People people;
private People(){}
public static People getInstance(){
if(people == null){
sysnchronized(People.class){
if(people == null){
people = new People()
}
}
}
return people;
}
}

5、创建多线程有哪几种方式:4种

1、继承Thread类

2、实现Runnable接口

3、实现Callable接口

4、使用线程池进行创建

本文作者:huxingxin

本文链接:https://www.cnblogs.com/huxingxin/articles/17023958.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   huxingxin  阅读(22)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起