zoukankan      html  css  js  c++  java
  • java-day14

    多线程程序访问共享数据会产生安全问题

    解决线程安全问题

      同步代码块

        synchronized(锁对象){

         可能出现线程问题的代码 

        }

      同步方法

        修饰符 synchronized 返回值类型 方法名(){

          可能出现线程问题的代码  

        }

      静态同步方法

        修饰符 static synchronized 返回值类型 方法名(){

          可能出现线程问题的代码  

        }

        静态方法的锁对象是本类的class属性

      Lock锁

        void lock()  获取锁

        void unlock()  释放锁

        在成员位置创建ReentrantLock对象

        在可能出现问题代码前lock()

        在可能出现问题代码后unlock()

    线程的7种状态

      1.出生状态

      2.就绪状态

      3.运行状态

      4.等待状态  调用wait()方法等待,通过notify()方法唤醒 notifyAll()唤醒所有等待线程

      5.休眠状态  sleep()方法

      6.堵塞状态

      7.死亡状态

    线程池、

      创建多个线程,保存到一个集合中,当需要使用时,从集合中取出来给线程使用

      Executor类  生成线程池类

        通过方法 newFixedThreadPool() 返回一个ExecutorService接口

        ExecutorService中的submit()方法 从线程池中获取线程 void shutdown()方法 关闭/销毁线程池方法

      Lambda表达式  函数式编程思想

        格式

          (参数列表) ->{重写方法的代码}

          ():接口中的抽象方法

          ->:传递

          {}:重写抽象方法的方法体

       

       优化:1.数据类型一样可以省略,如果只用一个参数()也可以省略 2.如果{}中代码只有一行 {},return,;可以省略

  • 相关阅读:
    【无中生有】---4----数据库设计-3
    【无中生有】---2---数据库设计-1
    redis3.0的demo实验
    redis3.0的demo实验
    那些在学习iOS开发前就应该知道的事(part 1)
    模板文件中的插件嵌入点列表
    图像处理框架 Core Image 介绍
    sharepoint services
    DiscuzX2.5数据库字典 值得学习
    Sublime Text 使用技巧
  • 原文地址:https://www.cnblogs.com/324fch/p/11748238.html
Copyright © 2011-2022 走看看