多线程与虚拟机
一杯清泉
坚持初心,不负梦想!!!
展开
-
线程本地变量获取
一、使用并发性好的Map集合以Map集合为例进行说明,将线程的名称作为键,线程的本地变量作为值,存储在Map集合中。然后在需要的地方,获取当前线程的名称,根据当前线程名称获取值。如下:public class Test { private static Map<String, Integer> map = Collections.synchronizedMap(ne...原创 2018-07-29 11:04:54 · 1785 阅读 · 0 评论 -
ThreadLocal源码分析
ThreadLocal类用来提供线程内部的局部变量。这些变量在多线程环境下访问时能保证各个线程里的变量相对独立于其他线程内的变量。一.ThreadLocalMap ThreadLocal类中有一个ThreadLocalMap,他是一个静态的内部类,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本,由于Key值不可重复,每一个“线程对象”对应线程...原创 2017-10-31 18:02:21 · 278 阅读 · 0 评论 -
线程创建、线程终止、线程同步、阻塞队列
一、线程创建 线程的创建包括三种方法,分别是继承自Thread,实现Runnable接口、实现Callback接口,前两个在开发中最为常见。1、继承自Thread public class OneThread extends Thread { @Override public void run() { Log.e("...原创 2018-06-06 22:40:41 · 613 阅读 · 0 评论 -
实现线程同步的几种方式总结
在多线程中线程的执行顺序是依靠哪个线程先获得到CUP的执行权谁就先执行,虽然说可以通过线程的优先权进行设置,但是他只是获取CUP执行权的概率高点,但是也不一定必须先执行。在这种情况下如何保证线程按照一定的顺序进行执行,今天就来一个大总结,分别介绍一下几种方式。通过Object的wait和notify 通过Condition的awiat和signal 通过一个阻塞队列 通过两个阻塞队列 ...原创 2018-07-25 21:31:26 · 80565 阅读 · 9 评论 -
线程之间的数据共享
线程之间的数据共享问题可以分为两类,一类是执行代码一直的的线程共享线程共享,另一类是执行代码不一致的线程共享问题。接下来分别进行总结。一、执行代码一致的线程共享问题如果每个线程执行的代码执行的代码相同,那么可以使用同一个runnable对象,这个runnable里面的数据共享。例如下面线程,启动五个线程,共享一个数据对j的操作。public class Test { sta...原创 2018-08-03 22:32:48 · 21901 阅读 · 4 评论