<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_39769154的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_39769154</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_39769154]]></copyright><item><title><![CDATA[枚举类的基本使用]]></title><link>https://blog.youkuaiyun.com/qq_39769154/article/details/109588665</link><guid>https://blog.youkuaiyun.com/qq_39769154/article/details/109588665</guid><author>qq_39769154</author><pubDate>Mon, 09 Nov 2020 23:28:20 +0800</pubDate><description><![CDATA[什么是枚举类？
枚举类是JDK1.5以后出现的一种新特性，枚举类可以定义一组确定的、有限的、同类型对象。如季节（春夏秋冬）、星期（周一…周日）等。
枚举类的定义

自定义枚举类（1.5以前）

/**
 * 在线状态类
 */
class State {
    /**
     * 头像颜色
     */
    private final String color;

    public static final State ONLINE = new State("green");
    publ]]></description><category></category></item><item><title><![CDATA[Java线程池的创建和使用]]></title><link>https://blog.youkuaiyun.com/qq_39769154/article/details/109437297</link><guid>https://blog.youkuaiyun.com/qq_39769154/article/details/109437297</guid><author>qq_39769154</author><pubDate>Sun, 08 Nov 2020 22:11:43 +0800</pubDate><description><![CDATA[什么是线程池？
线程池通俗的讲就是在程序启动时创建好若干个线程，供程序去调度和使用，当程序需要使用线程时不再需要去频繁的创建和销毁线程，而可以去线程池中获取空闲的线程直接使用，当使用完后线程进入空闲状态并非直接销毁线程。从JDK1.5开始，JAVA API的java.util.concurrent包下提供了Executors供开发人员方便的进行不同类型线程池的创建。
为什么使用线程池？

减小线程频繁创建和销毁对系统资源的消耗
提高系统响应速度，当系统需要使用线程时直接从池中获取
线程池可以根据实际情况进行]]></description><category></category></item><item><title><![CDATA[原子变量及CAS算法]]></title><link>https://blog.youkuaiyun.com/qq_39769154/article/details/102988148</link><guid>https://blog.youkuaiyun.com/qq_39769154/article/details/102988148</guid><author>qq_39769154</author><pubDate>Wed, 13 Nov 2019 21:12:11 +0800</pubDate><description><![CDATA[1.i++和++i问题
@Test
    public void test1(){
        int i = 0,j,k;
        j = i++;
        k = ++j;
        System.out.println("i="+i+",j="+j+",k="+k);
    }


问题分析：
如上图，以i++操作为例，显然该操作是非原子性的，在底层实际上可分为...]]></description><category></category></item><item><title><![CDATA[内存可见性及volatile关键字]]></title><link>https://blog.youkuaiyun.com/qq_39769154/article/details/102986818</link><guid>https://blog.youkuaiyun.com/qq_39769154/article/details/102986818</guid><author>qq_39769154</author><pubDate>Sat, 09 Nov 2019 14:34:29 +0800</pubDate><description><![CDATA[1.提出问题
阅读以下代码，思考运行结果！
package com.zsr.juc1;

public class VolatileTest {
    public static void main(String[] args){
        Demo d = new Demo();
        new Thread(d).start();

        while (true){
...]]></description><category></category></item><item><title><![CDATA[Java8新特性（八）——时间日期API]]></title><link>https://blog.youkuaiyun.com/qq_39769154/article/details/102955582</link><guid>https://blog.youkuaiyun.com/qq_39769154/article/details/102955582</guid><author>qq_39769154</author><pubDate>Thu, 07 Nov 2019 22:43:30 +0800</pubDate><description><![CDATA[八、时间日期API
1.LocalDate 、LocalTime 、LocalDateTime

LocalDate、LocalTime、LocalDateTime 类的实例是不可变的对象，分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间，并不包含当前的时间信息。也不包含与时区相关的信息。

常用方法：




方法
描述




now()
静态方法，根...]]></description><category></category></item><item><title><![CDATA[Java8新特性（七）——接口中的默认方法与静态方法]]></title><link>https://blog.youkuaiyun.com/qq_39769154/article/details/102951758</link><guid>https://blog.youkuaiyun.com/qq_39769154/article/details/102951758</guid><author>qq_39769154</author><pubDate>Thu, 07 Nov 2019 11:47:38 +0800</pubDate><description><![CDATA[七、接口中的默认方法与静态方法
1.接口的默认方法

Java 8中允许接口中包含具有具体实现的方法，该方法称为“默认方法”，默认方法使用 default 关键字修饰。

package com.zsr.interfacemethod;

public interface MyInterface1{

    default String fun1(){
        return "接口MyI...]]></description><category></category></item><item><title><![CDATA[Java8新特性（六）——Optional 类]]></title><link>https://blog.youkuaiyun.com/qq_39769154/article/details/102950075</link><guid>https://blog.youkuaiyun.com/qq_39769154/article/details/102950075</guid><author>qq_39769154</author><pubDate>Thu, 07 Nov 2019 10:58:39 +0800</pubDate><description><![CDATA[六、Optional 类
1.介绍
Optional 类(java.util.Optional) 是一个容器类，代表一个值存在或不存在，原来用 null 表示一个值不存在，现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。
2.常用方法




方法
描述




Optional.of(T t)
创建一个 Optional 实例


Optional.empty()
创建一...]]></description><category></category></item><item><title><![CDATA[Java8新特性（五）——串并行流及Fork/Join框架]]></title><link>https://blog.youkuaiyun.com/qq_39769154/article/details/102942489</link><guid>https://blog.youkuaiyun.com/qq_39769154/article/details/102942489</guid><author>qq_39769154</author><pubDate>Wed, 06 Nov 2019 23:25:08 +0800</pubDate><description><![CDATA[五、串并行流及Fork/Join框架
1.串行、并行和并发

串行：执行多个任务时，各个任务按照顺序执行，执行完一个才执行下一个。
并行：执行多个任务时，各个任务可以同时执行（多核CPU）。
并发：执行多个任务时，各个任务被不同线程执行（单核CPU）,本质上是线程抢占到时间片后执行任务，并不是同时执行多个任务。

2.思考问题
当我们需要执行一个数据量庞大的任务时，我们可以将任务分割成许多较小的任...]]></description><category></category></item><item><title><![CDATA[Java8新特性（四）——Stream API]]></title><link>https://blog.youkuaiyun.com/qq_39769154/article/details/102915057</link><guid>https://blog.youkuaiyun.com/qq_39769154/article/details/102915057</guid><author>qq_39769154</author><pubDate>Tue, 05 Nov 2019 16:02:11 +0800</pubDate><description><![CDATA[四、Stream API
1.什么是Stream？
在Java8中新添加的Stream API（java.util.stream.*）可以提高程序员的生产力，让程序员写出更高效、简洁的代码。它将要操作的元素集合生成一种流，流在管道中传输，并且可以通过对流的一系列操作最终得到我们预期的处理结果。
需要注意的是：

Stream流并不会储存元素
对Sream流的操作并不会改变源对象
Stream是延迟...]]></description><category></category></item><item><title><![CDATA[Java8新特性（三）——方法引用与构造器引用]]></title><link>https://blog.youkuaiyun.com/qq_39769154/article/details/102914201</link><guid>https://blog.youkuaiyun.com/qq_39769154/article/details/102914201</guid><author>qq_39769154</author><pubDate>Tue, 05 Nov 2019 14:02:59 +0800</pubDate><description><![CDATA[三、方法引用与构造器引用
1.方法引用
若Lambda体中的内容有方法已经实现了，我们可以使用“方法引用”（可以理解为方法应用Lambda表达式的另一种表达形式），使用操作符 “ ::” 将方法名和对象或类的名字分隔开来。
主要有三种语法格式：

对象：：实例方法名  （System.out::println）

	public void test1(){
        PrintStream ...]]></description><category></category></item><item><title><![CDATA[Java8新特性（二）——函数式接口]]></title><link>https://blog.youkuaiyun.com/qq_39769154/article/details/102842189</link><guid>https://blog.youkuaiyun.com/qq_39769154/article/details/102842189</guid><author>qq_39769154</author><pubDate>Thu, 31 Oct 2019 22:11:25 +0800</pubDate><description><![CDATA[二、函数式接口
1.思考问题
在使用Lambda表达式时，我们使用匿名函数的方式作为参数进行传递，如对员工按工资进行筛选，实际上是将 接口MyPredicate的test(T t) 方法进行了实现，如下：
参见Java8新特性（一）——Lambda表达式
public interface MyPredicate&lt;T&gt; {
    boolean test(T t);
}

public...]]></description><category></category></item><item><title><![CDATA[Java8新特性（一）——Lambda表达式]]></title><link>https://blog.youkuaiyun.com/qq_39769154/article/details/102836975</link><guid>https://blog.youkuaiyun.com/qq_39769154/article/details/102836975</guid><author>qq_39769154</author><pubDate>Thu, 31 Oct 2019 16:45:48 +0800</pubDate><description><![CDATA[一、Lambda表达式
1.为什么要使用Lambda表达式？
Lambda 是一个 匿名函数，我们可以把 Lambda表达式理解为是 一段可以传递的代码（将代码像数据一样进行传递）。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格，使Java的语言表达能力得到了提升。
现有需求：筛选出员工中年龄大于35岁的员工，我们该怎么做呢？直接上代码
普通方式：
对集合进行遍历，按照条件筛选，返回满足条...]]></description><category></category></item></channel></rss>