java并发编程
文章平均质量分 90
Java线程,多线程;
JUC、线程池、ThreadLocal
Synchronzied、ReentrantLock
lanleihhh
求其上者得其中
展开
-
线程之间如何交换数据?
实现了两个线程之间交换数据交换器类Exchanger 没有其他线程与之进行数据交换,超时后抛出异常 一个线程开始交换数据后,如果没有其他线程和它交换,就会一直阻塞,直到有线程交换、中断、超时等情况出现。阻塞… 中断 开启线程数据交换后,中断线程 中断线程后,线程停止阻塞,结束运行十个线程之间是如何交换数据的? 可以看到10个线程两两之间交换了数据如果9个线程之间交换数据,会发生什么捏? 9个线程之间交换数据,有四对线程互换数据了,最后一个线程不参与交换...原创 2022-07-14 15:40:53 · 538 阅读 · 0 评论 -
ThreadLocal详解
线程本地对象,为每个线程提供一个独立的变量,和其他线程是隔离的,互不干涉的。 ThreadLocal的简单使用: main线程没有对ThreadLocal变量操作,变量还是默认的0 而其他两个线程都对ThreadLocal变量进行了修改 但是修改只是线程自身使用的变量发生了变化,没有影响其他线程ThreadLocalMap的结构 创建map的方法: get()方法 setInitialValue()设置初始值 remove()方法 ThreadLocal内存泄漏问题 为什么会有内存泄漏问题? 首先T原创 2022-07-01 12:16:04 · 193 阅读 · 0 评论 -
Java线程
Java线程 目录Java线程1、程序、进程、线程2、一般方法与线程3、线程创建2.1继承Thread类2.2实现Runnable接口4、Thread类常用方法4.1 Thread 类构造方法4.2常用方法4.3优先级4.3.1优先级4.3.2调度策略4.3.3优先级静态常量5.线程状态(生命周期)6、线程分类6.1 用户线程与守护线程 1、程序、进程、线程 程序、进程、线程 在主线程中可以创建并启动其他的线程 一个进程内的所有线程共享该进程的内存资源 2、一般方法与线程 main()方法也属于线程(主线原创 2021-06-28 22:29:15 · 99 阅读 · 0 评论 -
Java多线程
Java多线程 1.1 概念 多线程指的是程序中包含多个不同的执行单元,一个程序中可以允许多个线程执行不同的任务 1.2 使用环境 程序需要执行两个及以上的任务 需要实现一些等待的任务(输入,文件读写,网络,搜索…) 需要一些后台运行的程序 1.3优缺点 优点: 提高程序的响应. 提高CPU的利用率. 改善程序结构,将复杂任务分为对个线程,独立运行. 缺点: 线程越多占用内存越多 多线程需要协调和管理,所以需要CPU时间跟踪线程 多个线程之间对共享资源的竞用访问,需要解决这个问题原创 2021-07-04 20:23:23 · 156 阅读 · 0 评论 -
Java高并发-学习笔记 上
并发编程并行与并发多线程多线程优点多线程带来的问题?JMM(Java内存模型)硬件设备之间的速度差异带来的问题?JMMJVM 主内存与工作内存并发编程核心问题--可见性,原子性,有序性可见性缓存不能及时刷新导致了可见性问题。有序性原子性线程切换带来的原子性问题 并行与并发 单核 cpu 下,线程实际是串行执行的。操作系统中有一个组件叫做任务调度器,将 cpu 的时间片,分给不同的线程使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感觉是同时运行的。 总结为一句话就是:微观串行,宏观并行,原创 2022-06-04 19:49:26 · 129 阅读 · 0 评论 -
并发编程之线程池ThreadPoolExecutor
当前线程数达到maxinumPoolSize时,新的任务会被采用拒绝策略处理 构造方法中handler参数是指定拒绝策略 AbortPolicy:抛出异常 CallerRunsPolicy:线程池未关闭 -> 在调用者线程中运行当前任务(如任务在main线程中,就由main线程去执行) DiscardOlddestPolicy:丢弃等待时间最长的任务DiscardPolicy:直接丢弃,不做处理 使用new创建的新对象,将引用指向一个变量,该变量是指向新对象的一个强引用 只要强引用对象是可触及的->就原创 2022-06-05 18:52:28 · 252 阅读 · 0 评论