第二天复习多线程的笔记整理
来源:互联网 发布:12377网络举报有用吗 编辑:程序博客网 时间:2024/06/08 17:04
多线程之间的数据既是共享的也是独立的!
现在一般接触到的是共享数据,独立就是各个线程之间操作静态变量(举个例子),但是要求各
个线程最后的结果各个线程之间互不干扰,这就是线程间的独立
ThreadLocal类:
用于线程之间独立数据存储的一个类,一个对象,只能为一个线程存储一个数据,它原理类似于
map集合,key是当前线程,value是自己要存储的数据。不过它的set方法只接受一个参数,即默
认的在内部将key填好。
多线程共享数据的方式:
方式一:创立两个Runnable对象,每个对象run方法放置不同的代码,共享数据在一个其他类里面
单独封装。
方式二:采用匿名内部类的方式,共享数据是这个外部类中的成员。
JDK1.5以后产生了并发库。java.util.concurrent包以及java.util.concurrent.atomic和
java.util.concurrent.locks包
volatile关键字:这个关键字是表示变量的,用于告诉jvm,这个变量会被多个线程访问,不必拷
贝独立的一份加载到自己的线程内存当中。直接在主内存中操作。它实现了线
程
间的可见性,即多个线程都在主内存中看到此变量。
内部执行路线:1.从主内存中获取值。2.执行操作。3.写回主内存。
synchronized: 这个同步执行过程:
1.获取锁。2.将当前线程的内存所存值清空。3.从主内存中复制过来
值。4.执行操作。5.将此线程的新值写回主内存。6.释放锁
现在一般接触到的是共享数据,独立就是各个线程之间操作静态变量(举个例子),但是要求各
个线程最后的结果各个线程之间互不干扰,这就是线程间的独立
ThreadLocal类:
用于线程之间独立数据存储的一个类,一个对象,只能为一个线程存储一个数据,它原理类似于
map集合,key是当前线程,value是自己要存储的数据。不过它的set方法只接受一个参数,即默
认的在内部将key填好。
多线程共享数据的方式:
方式一:创立两个Runnable对象,每个对象run方法放置不同的代码,共享数据在一个其他类里面
单独封装。
方式二:采用匿名内部类的方式,共享数据是这个外部类中的成员。
JDK1.5以后产生了并发库。java.util.concurrent包以及java.util.concurrent.atomic和
java.util.concurrent.locks包
volatile关键字:这个关键字是表示变量的,用于告诉jvm,这个变量会被多个线程访问,不必拷
贝独立的一份加载到自己的线程内存当中。直接在主内存中操作。它实现了线
程
间的可见性,即多个线程都在主内存中看到此变量。
内部执行路线:1.从主内存中获取值。2.执行操作。3.写回主内存。
synchronized: 这个同步执行过程:
1.获取锁。2.将当前线程的内存所存值清空。3.从主内存中复制过来
值。4.执行操作。5.将此线程的新值写回主内存。6.释放锁
0 0
- 第二天复习多线程的笔记整理
- 多线程的复习整理
- 第二天整理的笔记
- 第二章复习整理
- Struts2的笔记整理与复习
- 【复习笔记】关于synchronized的使用整理
- c /c++复习笔记 第二天
- 第二季复习笔记
- 多线程编程复习笔记 线程的创建
- 复习,整理笔记 心得
- ios--多线程复习笔记
- JAVA复习笔记--------多线程
- Android 第二天 类的复习
- 第二行代码复习笔记之Activity的相关用法
- 复习笔记(待整理)
- 数据库基础复习ing...1年前的笔记整理
- Java基础笔记的复习与整理--集合框…
- Java基础笔记的复习与整理---Socke…
- [C++]bitset用int数组实现
- leetcode 337. House Robber III-动态规划|Java|Python简洁高效
- CSS3新增的有关背景与边框的属性
- JVM之字节码指令简介
- 基于DNS的负载均衡
- 第二天复习多线程的笔记整理
- pku1085 Triangle War 完全极大极小搜索+状压DP
- CSS样式的优先级
- js简单交互动画,运动吧
- android工程师入职必装软件
- BOM知识点
- python笔记之字符串格式化
- 清晰明了有趣味的数字加密讲解
- ecshop登录超时、session过期的解决办法