
Java 线程
文章平均质量分 69
薛小强Forever
我不停地擦拭手中的利剑,不是因为我喜欢它,也不是因为它能带来安全。而是因为,每当下一次冲锋的号角响起,我能迅速拔出,纵横厮杀,直至战斗结束,不让自己倒下。生活在这样的时代,与其被迫上场,心怀恐惧,不如主动征伐,加入到时代的滚滚大潮当中,去见识一下时代的风采,写下自己的故事。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java线程学习笔记之线程简介
什么是线程几乎每一种操作系统都支持进程的概念——进程就是在某种程度上相互隔离的、独立运行的程序。 线程化是允许多个活动共存于一个进程中的工具。大多数现代的操作系统都支持线程,而且线程的概念以各种形式已经存在了好多年。Java是第一个在语言本身中显式地包含线程的主流编程语言,他没有把线程化看做是底层操作系统的工具。 有时候,线程也称作轻量级进程。就像进程一样,线程在程序中是独立的、并发的执行路原创 2017-02-15 17:24:29 · 436 阅读 · 0 评论 -
Java线程学习笔记之BlockingQueue阻塞队列
BlockingQueueBlockingQueue接口继承自Queue,是一个支持两个附加操作的队列:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。 BlockingQueue方法以四种形式出现,对于不能立即满足但可能在将来的某一时刻满足的操作,这四种形式的处理方式不同,分别是: 抛出一个异常 返回一个特殊值(null或false,具体取决于操作) 在操纵可以成功前,无限期的阻塞当转载 2017-02-27 10:57:58 · 620 阅读 · 0 评论 -
Java线程学习笔记之并行计算
Fork/Join在JDK7之后,Java加入了并行计算的框架Fork/Join,来解决系统中大数据计算的性能问题。在这里要强调的是并行并不是并发,并行是指系统内有多个任务同时执行,并发是指系统内有多个任务同时存在。不同的任务按时间分片的方式切换执行,由于切换的时间很短,给人的感觉好像是在同时执行。 Fork/Join采用的是分治法,Fork是讲一个大任务拆分成若干个子任务,子任务分别去计算,而J转载 2017-02-24 11:35:46 · 2055 阅读 · 0 评论 -
Java线程学习笔记之Lock
java.util.concurrent.locksjava.util.concurrent.locks软件包为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。Lock是该软件包下的一个接口,其实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。 ReentrantLock Lock的实现,一个可重入的互斥锁 Lock,它具有与使用 synchroniz原创 2017-02-23 11:08:23 · 458 阅读 · 0 评论 -
Java学习笔记之Callable和Future
Callable一个接口,类似于Runnable,两者都是为那些其实力可能被另一个线程执行的类设计的。但是Runnable不能反回结果,并且不能抛出经过检查的异常。而Callable可以返回结果并且能抛出异常。Future一个接口,表示返回的结果。FutureTask是Future的一个实现。 示例:import java.util.Random; import java.util.concurr原创 2017-02-22 16:31:10 · 436 阅读 · 0 评论 -
Java学习笔记之线程池
自JDK5之后,Java推出了一个在并发编程中很实用的软件包,java.util.concurrent。Executor执行已提交的 Runnable 任务的对象。此接口提供一种将任务提交与每个任务将如何运行的机制(包括线程使用的细节、调度等)分离开来的方法。ExecutorService实现了Executor,并提供了一些管理方法。是一个使用更广泛的接口。ScheduledExecutorServ原创 2017-02-21 11:58:31 · 431 阅读 · 0 评论 -
Java线程学习笔记之线程协作(通信)
线程协作在Java线程的使用中,仅仅有线程同步是不够的,还需要线程与线程协作(即通信),生产者/消费者问题是一个经典的线程同步以及通信的案例。下面我们通过他来理解线程协作。 该问题描述了两个共享固定大小缓冲区的线程,即所谓的“生产者”和“消费者”在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。问题的关键就是要保证生产原创 2017-02-17 11:53:19 · 410 阅读 · 0 评论 -
Java线程学习笔记之线程同步
线程间共享数据要使多个线程在一个程序中有用,它们必须有某种方法可以互相通信或共享它们的结果。而让线程共享其结果的最简单方法是使用共享变量。 线程与进程有许多共同点,不同的是线程与同一进程中的其它线程共享相同的进程上下文,包括内存。这非常便利,但也有重大责任。只要访问共享变量(静态或实例字段),线程就可以方便地互相交换数据,但线程还必须确保它们以受控的方式访问共享变量,以免它们互相干扰对方的更改。原创 2017-02-16 17:13:29 · 395 阅读 · 0 评论 -
Java线程学习笔记之线程安全与不安全
在JDK API,有很多类上面都写着是线程安全或者线程不安全,比如StringBuilder就是线程不安全的类,在多线程的情况下,如果需要同步,则建议使用StringBuffer。 存在成员变量的类用于多线程时是不安全的,不安全体现在这个成员变量可能发生非原子性的操作,而变量定义在方法内也就是局部变量是线程安全的。在日常开发中,通常需要考虑成员变量或者说全局变量在多线程环境下,是否会引发一些问题。原创 2017-02-16 11:20:23 · 417 阅读 · 0 评论 -
Java线程学习笔记之线程局部变量
ThreadLocal该类提供了线程局部变量。这些变量不同于它们的普通对应物,访问某个变量(通过get和set方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。即每个线程访问的是该变量的一个副本。在这个副本中,线程可以更改该变量的值,变量的初始化值不会改变,其他的副本亦不会改变。所以说,ThreadLocal存放的值是线程内共享的,线程间互斥的。类的其他方法请参考API。下面是一个实例:原创 2017-02-27 15:20:35 · 694 阅读 · 0 评论