多线程
java多线程基础
zzcheng_gogo
这个作者很懒,什么都没留下…
展开
-
ThreadLocal简介及java代码
ThreadLocalThreadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过get和set方法就可以得到当前线程对应的值。public static void main(String[] args) { ThreadLocal<String> tl = new ThreadLocal<>(); new Thread(new Runnable() { @Overri原创 2020-06-18 22:15:50 · 105 阅读 · 0 评论 -
线程工具类(CountDownLatch、CyclicBarrier、Phaser、ReentrantReadWriteLock、Semaphore、Exchanger)
CountDownLatchCountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。CountDownLatch(int count) void await() 导致当前线程等到锁存器计数到零,除非线程是 interrupted 。原创 2020-06-18 21:50:40 · 242 阅读 · 0 评论 -
LongAdder和AtomicLong
LongAdderAmoticLongAtomicLong是作用是对长整形进行原子操作。原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束。在32位操作系统中,64位的long 和 double 变量由于会被JVM当作两个分离的32位来进行操作,所以不具有原子性。而使用AtomicLong能让long的操作保持原子型。构造方法 AtomicLong() 创建一个新的AtomicLong,初始值为 0 。 AtomicLong(long initialValue)原创 2020-06-18 12:17:33 · 900 阅读 · 2 评论 -
CAS、ABA问题以及UnSafe类
CAS1、什么是CAS?CAS:Compare and Swap,即比较再交换。jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK 5之前Java语言是靠synchronized关键字保证同步的,这是一种独占锁,也是悲观锁ABA假设这里有两个线程线程1和线程2,线程1工作时间需要10秒,线程2工作需要2秒,主内存值为A,第一轮线程1和线程2都把A拿到自己的工作内存,2秒中后线程2工作完成把A改成了原创 2020-06-17 22:08:25 · 177 阅读 · 0 评论 -
volatile的使用及作用
volatile保证线程可见性static boolean checkType = true; public static void main(String[] args) throws Exception { new Thread(()->{ while(checkType){ } System.out.println("thread end"); }).start();原创 2020-06-17 22:06:27 · 337 阅读 · 0 评论 -
Synchronized作用及使用代码
Synchronized作用:当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码使用:修饰实例方法static class SynchronizedTest1 implements Runnable { static int count; public synchronized void increase(){ count++; }原创 2020-06-16 09:24:20 · 165 阅读 · 0 评论 -
线程池简介及常见问题
线程池(多线程)1.什么是线程池概述:线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放到队列中,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等待其他线程执行完毕,再从队列中取出任务来执行。2.为什么使用线程池??new Thread的弊端:每次new Thread新建对象性能差。线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机。缺乏更多功能,如定时执行、定期执行、线程中断。线程池的优点:降原创 2020-06-16 09:23:43 · 494 阅读 · 0 评论 -
线程简介及创建代码
线程1.什么是线程、多线程线程(thread):操作系统进行运算调度的最小单位。是进程中的实际运作单位,一个进程可以有很多线程,每条线程并行执行不同的任务。多线程(multithreading):从软件或者硬件上实现多个线程并发执行的技术。 同一时间执行多个线程,提升整体处理性能多线程作用:为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。并发和并行:并发当有多个线程在操作时,如果系统只有一个C原创 2020-06-16 09:23:20 · 242 阅读 · 0 评论