第二天复习多线程的笔记整理

来源:互联网 发布: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.释放锁
0 0
原创粉丝点击