![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 60
Anur
这个作者很懒,什么都没留下…
展开
-
线程基础之锁的级别
public class MultiThread { static Logger logger = LoggerFactory.getLogger(TestThread.class); private int num = 0; public synchronized void printNum(String tag) { if (tag.equal...原创 2018-03-19 17:52:15 · 463 阅读 · 0 评论 -
从 NIO SelectionKey 看按位运算符在权限设计中的运用
一、为什么要这样设计权限 /** * Operation-set bit for read operations. * * <p> Suppose that a selection key's interest set contains * <tt>OP_READ</tt> at the start of a <...原创 2018-07-14 00:06:14 · 618 阅读 · 0 评论 -
细粒度的线程控制?使用Lock Condition~
这里举一个栗子,我们对一个资源进行加锁,可是又要进行细粒度的控制,该如何实现呢?比如我们开了了个餐馆。餐馆有一个厨房,服务员可以通知厨房进行做菜,当前冰箱里有菜时,厨房就会开始做菜,冰箱里没菜则会等待。/** * Created by Anur IjuoKaruKas on 6/28/2018 */@SuppressWarnings("Duplicates")public cl...原创 2018-06-28 14:45:03 · 397 阅读 · 0 评论 -
源码解读ExcutorService之ScheduledExecutorService
ScheduledExecutorService继承自ExcutorService,也就是它是一种线程池,它不仅能实现任务的跟踪与管理,还能定时、定频执行任务。文档渣翻An ExecutorService that can schedule commands to run after a given delay, or to execute periodically.它是一种可...原创 2018-05-23 11:06:21 · 504 阅读 · 0 评论 -
java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not present JAVA9
java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not present at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117) ~[na:na...原创 2018-04-10 11:00:34 · 3692 阅读 · 0 评论 -
从ArrayList说起的JAVA复制与参数传递机制
这两者都算是java基础中的基础,平常写代码可能并没有过多的去深究它,但这样容易引发一些不可预知的BUG。这里有一个简单的类,文章中会提到多次。一个学生类,它有两个属性,String类型的name与Integer类型的age。public class Student { private String name; private Integer age; p...原创 2018-03-20 10:21:58 · 2556 阅读 · 2 评论 -
定义一个Configuration Processor读取spring配置!
1、引入maven依赖 <!-- configuration-processor --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-c...原创 2018-03-20 10:21:03 · 4389 阅读 · 2 评论 -
用JAVA反射去构建一个对象吧!
比如想把 A (以下称modelWantToCast)的所有字段 赋值给B(以下称modelCastTo) 【需要字段名一样】 public static <T> T castModelToAnotherModel(Object modelWantToCast, Class<T> modelCastToClazz) { if (modelWa...原创 2018-03-20 10:19:38 · 209 阅读 · 0 评论 -
Java中空指针异常及其处理
在Java中,null值可以被分配给一个对象的引用,表示该对象当前正在指向未知的数据。当程序试图访问这个引用时,将会抛出 NullPointerException。那么如何避免程序抛出空指针异常?1、避免去调用可能为null的对象的方法(静态方法除外)String str = null;if(str.equals("Test")) { /* The code ...原创 2018-03-19 17:59:40 · 8084 阅读 · 0 评论 -
Java Socket基础
Socket,也叫套接字..emmmmm…. 。三次握手socket通信的连接可分为四个步骤:服务器监听:服务器实时监控网络,等待客户端的连接。客户端请求:客户端发出了请求,向服务器提出连接请求,连接要提供ip+端口。服务器确认连接:服务器接收到了来自客户端的请求,它会新建一个线程,将套接字的描述发送给客户端。客户端连接确认一旦客户确...原创 2018-03-19 17:58:58 · 166 阅读 · 0 评论 -
简单说说重入锁与读写锁
先说说重入锁,既然说到了重入锁,那么也顺带提一下不可重入锁(自旋锁)吧。这两个概念实际上很好区分,重入锁:就如同在饭堂打饭,你在窗口排着队。排到你的时候,突然路人A让你顺带着打个饭吧,然后你就打了两份饭,这时候你还没离开窗口,又有路人B让你打一份汤,于是你又额外打了一份汤。即:可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但...原创 2018-03-19 17:58:21 · 2137 阅读 · 0 评论 -
线程池的创建以及CyclicBarrier与CountDownLatch的简单使用
一、线程池的简单创建(1)、使用Executors进行创建 ExecutorService poo1 = Executors.newFixedThreadPool(10); ExecutorService pool = Executors.newSingleThreadExecutor();这两种线程池都是无界队列的线程池,创建比较简单,但可能导...原创 2018-03-19 17:57:14 · 999 阅读 · 0 评论 -
简单的Future模式及其实现
Future模式是一个多线程的设计模式,以下一个简单的实现例子。实现的原理有点类似订蛋糕,你去商店定做蛋糕时,并不能直接拿到蛋糕,而是拿到购物小票之类的,你需要等蛋糕制作完成后,再来取。在这期间你可以去做其他的事情,而不必在蛋糕店等待蛋糕的制作。这和单独开一个线程没有什么区别,具体有什么好处我目前也不是很清楚,能感受到的就是代码更加简洁了..易读性增强了吧~/** * Created...原创 2018-03-19 17:56:16 · 453 阅读 · 0 评论 -
线程基础之挂起与通知
public class NotifyAndWaitTest extends Thread { private Integer num = 0; private static Boolean lock = false; private void addNum() { num++; } private void soutNum() { ...原创 2018-03-19 17:53:01 · 285 阅读 · 0 评论 -
仿照Kafka,实现一个简单的监听器 + 适配器吧!
前言不同于Spring中复杂的实现,在Kafka中,对于Listener和对应的Adaptor,都十分的简单与简洁。下面我们就以Kafka的实现作为参考,简单说说如何去实现一个监听器与适配器。一、监听器1.1 从 Kafka RequestFuture&amp;lt;\T&amp;gt; 简单看看监听器的实现我们可以看到,在这个RequestFuture类中,有一个 addListener 方法,...原创 2018-09-03 18:25:16 · 1794 阅读 · 0 评论