- 博客(17)
- 收藏
- 关注
原创 Java8 RecursiveTask实现forkjoin
package com.mock;import org.junit.jupiter.api.Test;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.RecursiveTask;public class TestForkJoinCalculate { @Test public ...
2019-12-29 18:52:00
295
原创 Java8 Stream API
创建Stream的4种方式 /** * 创建Stream */ @Test public void test1() { //1. Collection 提供了两个方法 stream() 与 parallelStream() List<String> list = new ArrayList<>()...
2019-12-29 18:25:00
162
原创 Java8 方法、构造器、数组引用
一、方法引用:若 Lambda 体中的功能,已经有方法提供了实现,可以使用方法引用对象的引用 :: 实例方法名类名 :: 静态方法名类名 :: 实例方法名注意:①方法引用所引用的方法的参数列表与返回值类型,需要与函数式接口中抽象方法的参数列表和返回值类型保持一致!②若Lambda 的参数列表的第一个参数,是实例方法的调用者,第二个参数(或无参)是实例方法的参数时,格式: ClassN...
2019-12-29 16:39:40
206
原创 Java8 Lambda表达式和4大函数式接口
Lambda表达式操作的必须是函数式接口,也就是只有一个抽象方法的接口package com.mock;import org.junit.jupiter.api.Test;import java.util.function.Consumer;import java.util.function.Function;import java.util.function.Predicate;...
2019-12-29 15:50:17
353
原创 创建线程的4中方式
1、继承Thread类2、实现Runnable接口3、实现Callable接口4、通过线程池创建package com.mock;import org.junit.jupiter.api.Test;import java.util.concurrent.*;public class TestThread { /** * 继承Thread类 */ ...
2019-12-22 22:21:16
192
原创 读写锁ReadWriteLock
ReadWriteLock可以多个线程读,读锁可以多个线程持有,但是写锁是独享的package com.mock;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;public class TestReadWriteLock {...
2019-12-22 22:05:28
174
原创 使用Lock Condition交替打印ABC
使用Lock Condition交替打印ABCpackage com.mock;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class TestPrint...
2019-12-22 21:43:17
511
1
原创 使用Condition加Lock解决生产者消费者问题
使用Condition加Lock解决生产者消费者问题package com.mock;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class TestPr...
2019-12-22 20:51:06
148
原创 生产者消费者问题虚假唤醒
生产者消费者问题演示及解决问题一:package com.mock;import org.junit.jupiter.api.Test;public class TestProducerAndConsumer { @Test public void test() { Product p = new Product(); new Threa...
2019-12-22 20:45:50
232
原创 同步锁Lock
使用Lock可以使多线程数据安全多线程安全问题:package com.mock;import org.junit.jupiter.api.Test;public class TestLock { @Test public void test() throws InterruptedException { ThreadLock tl = new Thre...
2019-12-22 19:31:54
159
原创 CountDownLatch
CountDownLatch可以使某个线程等待其他线程执行完成之后才执行代码逻辑package com.mock;import org.junit.jupiter.api.Test;import java.time.Duration;import java.time.Instant;import java.util.concurrent.CountDownLatch;public...
2019-12-22 18:54:37
178
原创 原子性及CAS算法
java.util.concurrent.atomic 包下提供了一些原子变量非原子性操作问题:package com.mock;import org.junit.jupiter.api.Test;public class TestAtomic { @Test public void test() throws InterruptedException { ...
2019-12-22 18:33:13
276
原创 volatile关键字
volatile关键字是为了解决线程之间共享变量不可见问题。会强制刷新主内存的变量使线程能拿到最新的变量。线程之前共享变量不可见问题:package com.mock;import org.junit.jupiter.api.Test;public class TestVolatile { /** * 主线程永远不会打印消息 */ @Test ...
2019-12-22 17:20:11
114
原创 NIO管道Pipe
实现开启一条线程向Pipe 管道里面写入数据,另一条线程读取Pipe管道里面的数据package com.mock;import org.junit.jupiter.api.Test;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.Pipe;import java.time...
2019-12-22 15:57:42
193
原创 字符集编解码Charset
利用Charset实现数据的编解码package com.mock;import org.junit.jupiter.api.Test;import java.nio.ByteBuffer;import java.nio.CharBuffer;import java.nio.charset.CharacterCodingException;import java.nio.char...
2019-12-22 15:54:52
2328
原创 实现非阻塞UDP DatagramChannel
利用DatagramChannel 实现非阻塞的数据报发送接收package com.mock;import org.junit.jupiter.api.Test;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channe...
2019-12-22 15:51:46
503
原创 简单聊天室SocketChannel ServerSocketChannel
利用SocketChannel ServerSocketChannel实现简单的聊天室package com.mock;import org.junit.jupiter.api.Test;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import jav...
2019-12-22 15:46:49
534
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人