摘要:
java有哪些特点 1.面向对象。 让程序耦合度更低,内聚性更高,Java是一种面向对象的编程语言,它对对象中的类、对象、继承、封装、多态、接口、包等均有很好的支持。 面向对象(Object-Oriented)是一种编程思想,它将现实世界中的对象映射到程序中的类和对象,通过对象之间的交互和消息传递来 阅读全文
摘要:
3.1 概述 Java8的Stream使用的是函数式编程模式, 如同它的名字一样,它可以被用来对集合或数组进行链状流式的操作。可以更方便的让我们对集合或数组操作。 3.3 快速入门 3.3.1 需求 我们可以调用getAuthors方法获取到作家的集合。现在需要打印所有年龄小于18的作家的名字,并且 阅读全文
摘要:
2.1 概述 Lambda是JDK8中一个语法糖。 他可以对某些匿名内部类的写法进行简化。 它是函数式编程思想的一个重要体现。 让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。 2.2 核心原则 可推导 可省略 2. 3 基本格式 (参数列表)->{代码} new Thread(()- 阅读全文
摘要:
为什么学? 能够看懂公司里的代码 大数量下处理集合效率高,因为有并行流,而自己创建处理会有很多问题 代码可读性高 消灭嵌套地狱 本系列将从Lambda表达式、Stream流、Optional、函数式接口、方法引用等顺序开始讲解 //查询未成年作家的评分在70以上的书籍 由于洋流影响所以作家和书籍可能 阅读全文
摘要:
栈和栈帧 JVM由堆、栈、方法区;栈内存就是给线程使用,当每个线程启动后,虚拟机就会为其分配一块栈内存 每个栈由多个栈帧(Frame)组成,对应每调用一次方法调用时所占用的内存 每个线程中只能有一个活动栈帧,对应当前正在执行的方法 线程上下文切换(Thread Context Switch) 由于一 阅读全文
摘要:
以前写多线程的弊端 用到线程的时候就创建 用完之后线程消失 为了避免浪费,所以我们需要一个容器 起初线程池是空的,当给线程池提交任务时会自动创建线程去执行任务,执行完后线程不消失,回归线程池,之后就不需要创建线程 当线程正忙着执行一个任务时,会创建新的线程 核心原理 1.创建空池子 2.提交任务时, 阅读全文
摘要:
一个多线程协作模式 消费者 先判断中间类是否有消费品 没有则等待,有则消费 消费之后唤醒生产者 生产者 判断中间类是否有消费品 有则等待,没有则生产 消费品放在中间类 唤醒消费者 常用方法: 需要用锁对象去调用 void wait() 让当前线程等待,知道被其他线程唤醒 让当前线程跟锁绑定 void 阅读全文
摘要:
同步代码块解决线程安全问题 当多个线程操作同一数据时会出现问题 会出现多次相同,会超过范围 线程执行代码时,cpu执行权随时有可能被其他线程抢走 所以我们需要把操作共享数据的代码锁起来 需要一个关键字 Synchronized(锁对象){执行代码} 特点一:锁状态默认打开,但一个线程进去了,锁自动关 阅读全文
摘要:
1.创建线程对象(新建状态) ↓↓↓start()方法↓↓↓ 2.有执行资格没有执行权(就绪状态,不停抢cpu),有资格抢cpu,但目前没有抢到 ↓↓↓抢到执行权↓↓↓ ↑↑↑被其他线程抢到执行权↑↑↑ 3.有执行资格有执行权(运行状态) ————sleep()或者其他堵塞方法————》没有执行资格 阅读全文
摘要:
getName()和setName() String getName() //返回线程的名称void setName(String name) 设置线程的名字(构造方法亦可设置) 细节: 如果我们没有给线程设置名字,默认名字格式为:Thread-x(x序号,从0开始) 如果给线程设置名字,可以用se 阅读全文