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中函数式接口
逐个处理用的消费等等等具体使用根据实际情况现在没涉及学了也会忘

浙公网安备 33010602011771号