
java
文章平均质量分 75
技术王老五
这个作者很懒,什么都没留下…
展开
-
CountDownLatch和CyclicBarrier原理的理解与实际的区别
看了各种资料和书,大家一致的意见都是CountDownLatch是计数器,只能使用一次,而CyclicBarrier的计数器提供reset功能,可以多次使用;但是我认为这只是一种比较笼统的区别,从javadoc中我们可以获取到这样描述:CyclicBarrier:一种同步辅助工具,允许一组线程都等待彼此到达一个共同的障碍点。cyclicbarrier在涉及固定大小的线程组的程序中很有用,这些线程偶尔必须等待对方。这个屏障被称为(循环的),因为它可以在等待的线程被释放后重新使用。CountDownLa原创 2021-06-18 18:16:38 · 1035 阅读 · 0 评论 -
网络通信IO的演进过程
BIO、NIO、多路复用器----->nettypublic class Demo { public static void main(String[] args) throws Exception { ServerSocket server = new ServerSocket(8090); System.out.println("step 1 new serverSocket"); while (true){ S原创 2020-12-13 11:10:40 · 232 阅读 · 0 评论 -
同步 异步 阻塞 非阻塞 区别
异步、同步针对进程来说,关注client与sever之间的关系,阻塞与非阻塞更加关注与线程与线程的关联异步:client访问server端,client可以继续自己的操作,然后通过其他机制来获取结果:状态、通知或者回调函数同步:client访问server端,等待结果直到server端结果返回结果阻塞:改线程从头执行到尾,一直等到执行结束非阻塞:改进程在处理过程中,可以继续处理任务,不会因为其中的某个过程阻塞住(新开一个线程去执行其他的任务等等),隔一段时间调用调用一下之前的操作是否完成。原创 2020-07-08 16:55:14 · 153 阅读 · 1 评论 -
线程池线程数目的设置
线程池在使用过程中需要我们设置核心线程数,但是如何设置核心呢?从以下的几个角度去考虑问题1.任务的性质:cpu密集型、IO密集型、混合任务型2.任务的执行时间:长、中、短3.任务的依赖性:是否依赖其他的服务根据以上的集中角度:如果是CPU密集型的话,我们应该尽量减少线程数,尽量减少切换带来的开销,建议是CPU核数 + 1(计算密集型的线程偶尔由于缺失故障或者其他原因而暂停时,这个额外的线程也能确保CPU的时钟周期不会被浪费)如果是IO密集型的话:最佳线程数目 = ((线程等待原创 2020-06-22 16:17:46 · 775 阅读 · 0 评论 -
伪共享以及如何解决伪共享
CPU的缓存主内存是数据存放的地方,cpu处理速度与硬盘、内存的访问速度相差太大,因此添加cpu的缓存进行中间过渡,否则主内存的访问速度的严重影响cpu整体的运行速度对一块数据多次运算,那么在执行运算的时候就会加载到离cpu比较近的就有了意义,越靠近cpu的缓存运行速度越快。所以 L1 缓存很小但很快,并且紧靠着在使用它的 CPU 内核。L2 大一些,也慢一些,并且仍然只能被一个单独的 CPU 核使用。L3 在现代多核机器中更普遍,仍然更大,更慢,并且被单个插槽上的所有 CPU原创 2020-06-08 16:01:11 · 1700 阅读 · 0 评论 -
指令重排的意义
现代计算机由三大部分组成(已经转化为以存储器为中心)1.CPU(CentralProcessingUnit) 中央处理器,核心部件为ALU(ArithmeticLogicUnit,算术逻辑单元)和CU(ControlUnit,控制单元)2.I/O设备(受CU控制)3. 主存储器(MainMemory,MM),分为RAM(随机存储器)和ROM(只读存储器)//CPU与MM合...原创 2020-04-21 18:24:50 · 1831 阅读 · 0 评论 -
dubo使用注解,事务不生效
问题:在使用dubbo 2.5.3之前的版本@Service来发布服务时,当该服务中有@Transactional,服务注册不了@Component@Service//这个service注解是dubbo的@Transactionalpublic class UserServiceImpl implements UserService { @Autowired private U...原创 2019-12-19 11:53:10 · 637 阅读 · 0 评论 -
class.forName与classLoader区别
题记:记录一下java反射中的一些面试问题区别: @CallerSensitive public static Class<?> forName(String className) throws ClassNotFoundException { Class<?> caller = Reflectio...原创 2019-10-10 16:56:51 · 182 阅读 · 0 评论