JAVA从零学re从零开始的JAVA学习02——<javaSE阶段二基础版>

day02 线程安全和同步、Lambda表达式、函数式接口方法引用、Stream流

  线程的基本概念

    并行:同时执行  并发:交替执行  

    单核处理器不能并行  多核处理器因为需要处理的程序很多也是并发处理但能大大提高程序效率

    进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间。

    线程:进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。

  线程的创建

      

 

 

 

      方法一:继承Thread线程类 重写run方法 创建实例化对象开启线程

        

        

 

      方法二:

        

         这个方法可以使用匿名内部类来写

  线程的同步

      概述:多个线程同时操作同一资源造成的混乱问题  问题解决:通过加锁和解锁的方式实现原子操作

      方法一:同步代码块:synchronized(同步锁){可能出现线程安全问题的代码}  注意:多个线程对象需要一把同步锁同步锁可以是任意对象

      方法二:同步方法public synchronized void method  使用的锁对象是this  静态方法是字节码对象(后面的反射概念)

      方法三:lock锁  java提供的类使用方式 lock.lock()  可能出现线程安全问题的代码 lock.unlock()

  线程的状态

      线程的六种状态:

  

      线程进入等待的方法:计时等待 Thread.sleep    无限等待:锁对象调用wait()唤醒 notify() 必须使用同一个锁对象

  线程池的使用

      暂时简单了解下

      Executors类创建线程池ExecutorService service=Executors.newFixedThreadPool(int x)

      service.submit(runnable)  关闭线程池service.shutdown();

  2.lambda表达式、函数式接口、Stream流

    lambda表达式:

      jdk8的新语法  用数学函数方式来简化代码

      组成:一些参数、一个箭头、一段代码  (参数)->{代码}

      规则就是简化代码 :小括号参数可省略、只有一个参数括号可省略、大括号只有一个语句{}、return可以省略

      要可以推断出来的才可以简写 如参数  且必须继承有且只有一个抽象方法的接口

      函数式接口:只有一个抽象方法的接口为函数是接口

      常见的4个函数式接口:supplier、consumer、function、predicate

      consumer<T t>:抽象方法accept(T t)消费一个指定泛型   重写抽象方法来定义消费方式

      

 

      

 

      暂时了解这些  抽象方法使用 默认方法辅助

      方法引用:可推导可省略原则    使用 :“::” 用来简化lambda表达式

       

 

       ()-> System.out.println

        

 

       

 

 

       

 

 

  Stream流

      流式编程,与io流不是一个流,类似于流水线生成过滤

      流的获取:在数组和集合中都可以获取流

      集合:集合.Stream();map集合需要先获取key集合等获取相应的流

      数组:Stream().of(Array)

      

      方法的使用集合了4中函数式接口

      逐个处理用的消费等等等具体使用根据实际情况现在没涉及学了也会忘

 

 

 

 

      

    

    

     

 

 

        

 

posted @ 2020-02-05 15:52  袁德华  阅读(138)  评论(0)    收藏  举报