![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程
文章平均质量分 77
MaybeUnforgiven
一个热爱摇滚的程序员,Talk is cheap,show me code
展开
-
Java多线程之synchronized的使用技巧
在使用synchronized的时候,我们有时只是希望防止多个线程同时访问方法内部的部分代码而不是防止其访问整个方法,通过这种方式分离出来的代码我们成为临界区(critical section),如下列代码所示:原创 2017-06-19 16:52:39 · 351 阅读 · 0 评论 -
Java多线程之详解ThreadLocal类(一)
ThreadLocal类是用来创建和管理线程的本地存储的类。线程的本地存储可以为相同变量的每个不同线程都创建不同的存储,根除了线程对变量的共享,从而防止多线程任务在共享资源上发生冲突。我们先看下列代码: public class ThreadLocalTest { private static ThreadLocal value = new ThreadLocal(){原创 2017-06-21 15:36:03 · 496 阅读 · 0 评论 -
Java关键字volatile的理解与正确使用
概述 Java语言中关键字 volatile 被称作轻量级的 synchronized,与synchronized相比,volatile编码相对简单且运行的时的开销较少,但能够正确合理的应用好 volatile 并不是那么的容易,因为它比使用锁更容易出错,接下来本文主要介绍 volatile 的使用准则,以及使用过程中需注意的地方。 为何使用volatile? (1)简易性:在某些需要同转载 2017-06-13 23:10:47 · 419 阅读 · 0 评论 -
java多线程之并行框架ForkJoin
在java7中新加入了ForkJoin,我是一个特别容易被新这个字吸引的人,好奇之下就去查了查资料,它是Java7提供的原生多线程并行处理框架,其基本思想是将一个大任务分割为一个个独立执行的子任务,再将子任务得到的结果聚合起来最终的result,在我看来,他的思想和快速排序算法有异曲同工之妙。ok,我们先看看我参照大神写的demo。 public class ForkJoin extends原创 2017-07-23 22:47:34 · 446 阅读 · 0 评论 -
Java多线程之synchronized与Lock
首先我们需要先理解一下什么是共享受限资源。 private int currentEvenValue = 0; public int next() { ++currentEvenValue;//++I表示先自增在赋值,I++表示先赋值在自增 //Thread.yield(); ++currentEvenValue; return currentEvenValu原创 2017-06-10 22:44:27 · 382 阅读 · 0 评论 -
使用callable获取子线程的返回值
我们都知道实现多线程可以继承Thread类或者是实现Runnable接口,但是有的时候我们需要子线程返回处理结果,而run方法又是void的,下意识里我们就想到在run方法里使用全局变量,但是总感觉这种处理方式怪怪的,其实java本身提供了这个有返回值的子线程,那就是Callable接口。 class lianxi implements Callable{ private int n;原创 2017-08-27 17:58:36 · 965 阅读 · 0 评论 -
Java多线程之捕获子线程中的异常
在某些场景下,我们经常需要使用多线程来执行任务提高性能,但是我们知道正常的线程是无法处理异常的,一旦出现异常就会传播到控制台。这个时候我们需要在线程里面处理异常怎么办呢,我们可以使用Executor来处理。 在Java5中新加入了一个Thread.UncaughtExceptionHandler接口,这个接口可以让我们在每个Thread对象上都附着一个异常处理器,它的unacughtExcept原创 2017-06-10 15:28:54 · 3572 阅读 · 3 评论