课程名称:Java体系课
章节名称:多线程的安全与应用(中)
课程内容:
- 线程的生命周期
- 线程的同步机制
- 线程安全问题与解决方式
学习收获:
- Thread类定义的线程六种状态
NEW,//新建状态
RUNNABLE,//可运行状态
BLOCKED,//阻塞状态
WAITING,//等待状态
TIMED_WAITTING,//超时等待状态
TERMINATED;//死亡状态 - 线程的同步机制
synchronized(同步锁)关键字的作用是利用一个特定的对象设置一个锁lock(绣球),在多线程(游客)并发访问的时候,同时只允许一个线程(游客)可以获得这个锁,执行特定的代码(迎娶新娘)。执行后释放锁,继续由其他线程争抢。
synchronized的锁对象:
- synchronized代码块 - 任意对象即可
//锁对象
Object lock = new Object();
//synchronized代码块演示,对自定义对象lock上锁
public void print1(){
synchronized (lock) {
try {
Thread.sleep(500);
System.out.print("魑");
Thread.sleep(500);
System.out.print("魅");
Thread.sleep(500);
System.out.print("魍");
Thread.sleep(500);
System.out.print("魉");
System.out.println();
} catch (Exception e) {
e.printStackTrace();
}
}
}
- synchronized方法 - this当前对象
//synchronized方法 - 对this当前对象上锁
public synchronized void print2(){
try {
//this
Thread.sleep(500);
System.out.print("魑");
Thread.sleep(500);
System.out.print("魅");
Thread.sleep(500);
System.out.print("魍");
Thread.sleep(500);
System.out.print("魉");
System.out.println();
} catch (Exception e) {
e.printStackTrace();
}
}
- synchronized静态方法 - 该类的字节码对象
//synchronized静态方法 - 该类的字节码对象Printer.class
public static synchronized void print3(){
try {
//Printer.class
Thread.sleep(500);
System.out.print("魑");
Thread.sleep(500);
System.out.print("魅");
Thread.sleep(500);
System.out.print("魍");
Thread.sleep(500);
System.out.print("魉");
System.out.println();
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 线程安全
在拥有共享数据的多条线程并执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况
课程截图
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦