继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

Henry_56
关注TA
已关注
手记 25
粉丝 0
获赞 0

课程名称: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();
            }
        }
    }
  • 线程安全
    在拥有共享数据的多条线程并执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况

课程截图

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP