JavaSE高级
文章平均质量分 87
多线程,IO,网络等
HDLaZy
生活不止眼前的CRUD,还有远方的框架源码!
展开
-
多线程进阶(CountDownLatch,死锁,线程安全集合类)
6:同步工具CountDownLatchCountDownLatch:等待多个任务执行完毕构造方法:给定计数 public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count < 0"); this.sync = new Sync(count); }主要方法: //减少锁存器的计数,如果到0释放所有等待进程 public v原创 2022-05-22 23:56:44 · 1108 阅读 · 0 评论 -
多线程进阶(锁策略,自旋+CAS,Synchronized,JUC,信号量)
1:锁策略锁策略:多线程对共享变量的操作,存在线程冲突的安全问题,引入锁策略解决这种问题。乐观锁VS悲观锁悲观锁:以悲观的心态看待线程冲突的问题,总是认为有其它线程要操作同一个共享变量,每次操作前都加锁乐观锁:以乐观的心态看待线程冲突的问题,总是认为没有线程会操作同一个共享变量,每次操作都不加锁直接操作共享变量(程序层面不加锁,CPU和操作系统实际有加锁)自旋锁循环,结合CAS不断尝试修改变量,直到修改成功才退出循环。读写锁Java中的读写锁:ReentrantReadWri原创 2022-05-21 17:20:27 · 306 阅读 · 0 评论 -
多线程基础(多线程内存,安全,通信,线程池和阻塞队列)
3:多线程内存以及线程安全,线程通信静态变量(static)在方法区上,变量的值在堆上静态常量(static final)在方法区上,常量的值在堆上实例变量(属于对象的属性,需要在对象的基础上建立),变量的值在堆上局部变量在线程对应的栈上,直接赋值的值在栈上,如果是创建的对象赋值则在堆上线程私有内存:每一个线程都有自己对应的栈,这些局部变量都属于线程私有的,其它线程是相互隔离的,JVM允许满足某些条件的线程使用。线程共享内存:各个线程共享的内存是方法区和堆,至于线程是否能使用方法区和堆上的数原创 2022-05-19 19:21:13 · 409 阅读 · 0 评论 -
多线程基础(概念,创建,中断)
1:什么是线程,和进程的区别联系线程:线程就是一个执行流,每个线程之间都按照顺序执行代码,多个线程间可以同时执行多份代码。为什么需要线程(线程优势):线程可以充分利用CPU资源,提高执行效率。等待IO的时间里可以进行别的操作。线程相比进程更加轻量级,资源消耗小于进程。线程劣势:增加编码复杂度,需要考虑线程安全相关。线程状态:NEW:创建态RUNNABLE:可运行态(包含就绪和运行态)程序无法判断就绪态或者运行态WAITING:等待TIMED_WAITING:超时等待BLOCKE原创 2022-05-19 19:07:28 · 162 阅读 · 0 评论