为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第8天 多线程的安全与应用(中)

标签:
活动

课程名称:Java体系课

章节名称:多线程的安全与应用(中)

课程内容:

  • 线程的生命周期
  • 线程的同步机制
  • 线程安全问题与解决方式

学习收获:

  • Thread类定义的线程六种状态
    NEW,//新建状态
    RUNNABLE,//可运行状态
    BLOCKED,//阻塞状态
    WAITING,//等待状态
    TIMED_WAITTING,//超时等待状态
    TERMINATED;//死亡状态
  • 线程的同步机制
    synchronized(同步锁)关键字的作用是利用一个特定的对象设置一个锁lock(绣球),在多线程(游客)并发访问的时候,同时只允许一个线程(游客)可以获得这个锁,执行特定的代码(迎娶新娘)。执行后释放锁,继续由其他线程争抢。

synchronized的锁对象:

  1. 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();
                }
            }
        }
  1. 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();
            }
        }
  1. 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 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消