java高性能开发
如何高性能开发讲解,资深开发人员的必备知识
科技发烧爱好者-羊工
一直在路上,
展开
-
Java 轻量级锁CAS原理
JVM的Synchronized重量级锁在操作系统内核态下是互斥锁的使用,所以线程阻塞和唤醒都涉及应用进程在用户状态到内核状态的频繁切换,导致锁开销大,性能低。JVM的轻量级锁使用CAS进行抢锁,CAS是CPU指令级的原子操作,处于用户状态下,所以JVM轻量级锁的开销较小。使用Unsafe类采用CAS原理,使用CAS中有四个参数,字段所在的对象、字段内存位置、原值、新值。在调用CAS方法时,首先判断内存位置的值与原值对比,如果相等,那么CPU会自动将该内存位置的值更新为新值,并返回TRUE,如果不匹原创 2022-05-15 19:25:23 · 453 阅读 · 0 评论 -
java 线程池ThreadPoolExecutor
ThreadPoolExecutor 关闭 public void shutdown():关闭后,提交的任务被有序运行,不会再接收新任务//线程阻塞队列 BlockingQueue<Runnable> bQueue = new LinkedBlockingDeque<Runnable>(2); //创建线程池 //核心线程数 3 //最大线程数 5 //阻塞队列3 ThreadPoolExecutor poolExecutor = ne..原创 2022-02-09 11:33:00 · 358 阅读 · 0 评论 -
java 创建线程的5种方式
第一种创建线程方法public class Test { public static void main(String[] args) { //创建线程方法1 Thread thread = new Thread(); System.out.println("线程ID:"+thread.getId()); System.out.println("线程名称:"+thread.getName()); System.out.println("线程状态:"+thread.getStat原创 2022-01-12 16:58:21 · 314 阅读 · 0 评论 -
java中的进程、线程
应用程序是以进程的方式运行在操作系统中,是操作系统分配资源的最小单位,进程中可以有多个线程。进程组成:程序段、数据段、进程控制块(进程ID、名称、状态、地址、文件句柄,上下文等)程序段:是进程中的代码程序指令集合,执行指令运行时,在内存中。数据段:是进程操作的数据集合,是在内存中进程控制块:是进程的基本信息和控制信息,进行的唯一标识Java的应用程序运行在Java虚拟机中,每执行一个Java应用程序,就会启动一个JVM进程,而JVM进程中是以线程来运行,执行main()方法后会产生一个j原创 2021-12-17 19:00:00 · 864 阅读 · 0 评论 -
Linux I/O模型(网络编程),5种I/O模型
Linux的内核把对所有的外部设备操作为文件操作,对文件读写操作对调用内核提供的系统命令 ,返回File Descriptor(fd),对socket的读写同样返回相应的描述符,socketFd.5种I/O模型 1、阻塞I/O模型:对所有的文件操作都是阻塞,应用进程在调用操作时,一直在等待阶段,直到系统调用把数据包复制到应用进程的缓冲区或者发生异常时才响应返回,从调用操作到返回响应时间阶段是阻塞的。 2、非阻塞I/O模型:对所有的文件操作都是非阻塞,应用进程在调用操...原创 2021-12-10 16:15:17 · 143 阅读 · 0 评论 -
I/O多路复用技术(网络编程)
优点:通过单线程处理多个客户端同时接入请求,不需要创建额外的进程和线程,减少了维护额外进程和线程运行,系统开销小,减少维护工作量,节省了系统资源。应用场景: 1、同时处理多个连接和监听状态的套接字2、同时处理多种网络协议的套接字原理:把多个I/O的阻塞复用到同一个模型(select、pselect、poll、epoll)的阻塞上,使在单线程的情况下同时处理多个客户端请求IO复用模式select:时间复杂度O(n),通过轮询所有读写流,...原创 2021-12-10 15:18:26 · 326 阅读 · 0 评论