Java多线程wait()用while代码块的理解

多线程wait()判断条件这个地方的逻辑琢磨了挺久的,本意就是拿到锁之后如果条件不满足就等待,感觉用if和while似乎没啥区别

首先是生产者,单独一个线程,和消费者共用一个锁和一个队列,都通过构造方法传入

1.线程里直接死循环持续生产消息,消息体最好不一样,可以弄个随机数,我这里用了微妙时间戳,调用add()方法

2.需要添加一个条件,如果队列已经满了,就不能继续添加了,调用wait()方法等待[……]

Read more

Java之BIO,NIO,AIO

这几个概念不清楚,熟悉一下,转自:Java BIO、NIO、AIO

写在前面

对于Java里面同步异步阻塞非阻塞那些,其实我的理解都只停留在最基础的层面,有一些概念可能还非常模糊。最近由于工作需要准备研究一下netty,查了一下发现-Netty 是一个基于 JAVA NIO 类库的异步通信框架。啥是NIO.. 一脸懵逼,看来不先搞懂这个是没办法进行下去了。看到NIO顺便又了解了一下B[……]

Read more

干货 | 阿里巴巴混沌测试工具ChaosBlade两万字解读

很详细的chaos工具,有空研究下,转自朱小厮的博客

一、前言

ChaosBlade 是一款遵循混沌工程实验原理,建立在阿里巴巴近十年故障测试和演练实践基础上,并结合了集团各业务的最佳创意和实践,提供丰富故障场景实现,帮助分布式系统提升容错性和可恢复性的混沌工程工具。

Chaosblade 可直接编译运行,cli 命令提示使执行混沌实验更加简单。目前支持的演练场景有操作系统类的 CPU、[……]

Read more

假装自己很懂系列:Java8函数表达式

最近有点迷上Stream,转载一篇Java8的函数表达式学习下,作者在最后

Java Lambda表达式的一个重要用法是简化某些匿名内部类(Anonymous Classes)的写法。实际上Lambda表达式并不仅仅是匿名内部类的语法糖,JVM内部是通过invokedynamic指令来实现Lambda表达式的。具体原理放到下一篇。本篇我们首先感受一下使用Lambda表达式带来的便利之处。

Lamb[……]

Read more

Java反射简述

转一篇Java反射基础讲,转载版权在最后

一、回顾:什么是反射?

反射 (Reflection) 是 Java 的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。

Oracle 官方对反射的解释是:

Reflection enables Java code to discover information about the fields, methods[……]

Read more

Jmeter测试Java Request Sampler

为了压测一个Java class方法,jmeter上导入弄了好久,记录一下遇到的坑

整体思路和网上能搜到的基本一样,但网上打包基本都是通过Export或者Build Artifacts来进行打包,这个地方我也折腾了好久,最后直接通过maven来打的包

1:Jmeter里Java request和之前发送kafka消息的地方一样,而此处Classname能够切换成我们的测试类,要想Jmeter能够识[……]

Read more

自定义异常类

Java内置了异常类Throwable,派生出Error类和Exception类

总体上我们根据Javac对异常的处理要求,将异常类分为2类。

非检查异常(unckecked exception):Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用tr[……]

Read more