![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
多线程知识
西土城fe
这个作者很懒,什么都没留下…
展开
-
Java使用线程池异步处理并返回结果
【代码】Java使用线程池异步处理并返回结果。原创 2023-08-17 17:21:46 · 1572 阅读 · 0 评论 -
sql中in后面元素过多导致索引失效解决方案
可以使用临时表,也可以分片查询。原创 2023-08-01 17:38:54 · 961 阅读 · 0 评论 -
CAS底层
CAS操作在底层有一条对应的汇编指令,硬件直接支持。LOCK_IF_MP,如果是多个CPU,前面还要加一条LOCK指令,本身cmpxchg指令是没有原子性的,在多个cpu执行时,加上LOCK指令就是保证一个CPU执行后面的empxchg指令时,其他CPU不能执行。在硬件层,LOCK指令在执行后面指令的时候锁定一个北桥信号(不采用锁总线方式)。所以CAS最终实现就是lock cmpxchg指令。原创 2023-03-30 19:51:40 · 430 阅读 · 0 评论 -
Java多线程Callable
Callable可以有返回值,返回值通过 Future 进行封装。FutureTask 实现了 RunnableFuture 接口,该接口继承自 Runnable 和 Future 接口,这使得 FutureTask 既可以当做一个任务执行,也可以有返回值。原创 2022-11-17 21:19:19 · 294 阅读 · 0 评论 -
Java通过URL进行多线程下载
*** 通过 URL 多线程下载文件* URL 对象提供的openStream() ,再通过它获取 URL 资源的 InputStream。// 获取当前时间 long begin_time = new Date() . getTime();//获取该URL的资源名,然后获取文件名 String fileName = url . getFile();System . out . println("开始下载>>>");原创 2022-10-09 15:21:35 · 513 阅读 · 2 评论 -
NettyServer fe
【代码】NettyServer fe。原创 2022-08-26 21:58:08 · 148 阅读 · 0 评论 -
Java Socket 全双工通信
最初在认识上有这样的误区,认为只有在 netty,nio 这样的多路复用 IO 模型时,读写才不会相互阻塞,才可以实现高效的双向通信,但实际上,Java Socket 是全双工的:在任意时刻,线路上存在A 到 B和 B 到 A的双向信号传输。即使是阻塞 IO,读和写是可以同时进行的,只要分别采用读线程和写线程即可,读不会阻塞写、写也不会阻塞读。...原创 2022-08-26 19:50:22 · 1101 阅读 · 0 评论 -
NIO Netty(六)netty实现简单的服务端与客户端
Netty: 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。原创 2022-08-26 15:35:04 · 153 阅读 · 0 评论 -
NIO Netty(五)零拷贝、同步异步
所谓的【零拷贝】,并不是真正无拷贝,而是在不会拷贝重复数据到 jvm 内存中,零拷贝的优点有。这期间用户线程阻塞,操作系统使用 DMA(Direct Memory Access)来实现文件读,其间也不会使用 cpu。可以看到中间环节较多,java 的 IO 实际不是物理设备级别的读写,而是缓存的复制,底层的真正读写是操作系统来完成的。(即 byte[] buf),这期间 cpu 会参与拷贝,无法利用 DMA。,去调用操作系统(Kernel)的读能力,将数据读入。,调用操作系统的写能力,使用 DMA 将。..原创 2022-08-26 15:06:26 · 196 阅读 · 0 评论 -
NIO Netty(四)Selector处理write事件、多线程优化
【代码】NIO Netty(四)原创 2022-08-26 10:53:52 · 523 阅读 · 0 评论 -
NIO Netty(三)
因为 select 在事件发生后,就会将相关的 key 放入 selectedKeys 集合,但不会在处理完后从 selectedKeys 集合中移除,需要我们自己编码删除。单线程可以配合 Selector 完成对多个 Channel 可读写事件的监控,这称之为多路复用。监听accept与read事件并处理。开并行,多个客户端测试服务端。selector 版。...原创 2022-08-25 21:33:19 · 310 阅读 · 0 评论 -
NIO Netty(二)
可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而stream 要么是输入,要么是输出,channel 比 stream 更为底层。已知channel 有一点类似于 stream,它就是读写数据的。为常见的一种channel ,只能工作在。channel的读取与写入。...原创 2022-08-25 20:54:46 · 100 阅读 · 0 评论 -
NIO Netty(一)
selector 的作用就是配合一个线程来管理多个 channel,获取这些 channel 上发生的事件,这些 channel 工作在非阻塞模式下,不会让线程吊死在一个 channel 上。,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而stream 要么是输入,要么是输出,channel 比 stream 更为底层。现在要求你编写程序,将错乱的数据恢复成原始的按 \n 分隔的数据。buffer 则用来缓冲读写数据,常见的 buffer 有。...原创 2022-08-25 20:08:08 · 66 阅读 · 0 评论 -
Java实现线程按指定顺序执行
代码】Java实现线程按指定顺序执行。原创 2022-08-15 21:02:03 · 191 阅读 · 0 评论 -
Java使用synchrnized关键字进行同步的方法
其中func3和func4持有的锁是同一个,对应于synchronizedDemo的class类创建的对象;其中func1和func2持有的锁是同一个,对应于synchronizedDemo的class类对象;func5的锁是字符串"123";原创 2022-08-11 16:53:41 · 153 阅读 · 0 评论 -
Java单例模式实现方式
在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。在程序启动时,会调用Singleton的空参构造器,实例化好一个Singleton对象赋给INSTANCE,之后再也不会实例化;懒汉式:类加载不会导致该单实例对象被创建,而是首次使用该对象时才会创建;单例模式有很多实现方法,饿汉、懒汉、静态内部类、枚举类;饿汉式:类加载就会导致该单实例对象被创建;3、懒汉式_静态内部类(比较推荐)...原创 2022-08-08 14:58:28 · 168 阅读 · 0 评论