线程基础
文章平均质量分 62
peng_0129
这个作者很懒,什么都没留下…
展开
-
线程Thread调用run方法和start方法的区别
如果是调用thread的run方法,则只是一个普通的方法调用,不会开启新的线程package cn.itcast_01_mythread.thread.testThread;import java.util.Random;public class MyThreadWithExtends extends Thread { String flag; public MyThreadWithExtend...原创 2018-05-17 15:03:26 · 258 阅读 · 0 评论 -
线程基础(八)同步集合ConcurrentHashMap&CopyOnWriteArrayList&CopyOnWriteArraySet
一 同步集合介绍 public class CollectionModifyException { //传统集合在迭代的时候,不允许对集合进行修改.要用到java.util.concurrent的并发集合类 public static void main(String[] args) { List<String> list = new CopyOnWriteArrayList...原创 2018-04-11 14:26:48 · 160 阅读 · 0 评论 -
线程基础(七)可阻塞队列ArrayBlockingQueue
一 可阻塞队列介绍 可阻塞队列,用三个空间的队列来演示阻塞队列的功能和效果public class BlockingQueueTest { /* * 可阻塞队列,用三个空间的队列来演示阻塞队列的功能和效果 */ public static void main(String[] args) { final BlockingQueue queue = new Arra...原创 2018-04-11 14:21:42 · 150 阅读 · 0 评论 -
线程基础(六)CyclicBarrier和&Semaphore
一 CyclicBarrier概念 执行结果二 Semaphore概念原创 2018-04-10 17:31:06 · 159 阅读 · 0 评论 -
线程基础(五)CountDownLatch
一 CountDownLatch概念 示例代码:1个指令发出者,三个响应者.执行结果示例二----------------------------------------------------------------------当执行t2线程的时候如果集合的大小不等于5,就执行lock.wait(),线程处于阻塞状态,但是会释放锁.t1线程得到这把锁,当集合大小等于5的时候。执行notify()...原创 2018-04-10 17:19:40 · 175 阅读 · 0 评论 -
线程基础(四) Lock&Condition实现线程同步通讯
一 Lock锁的介绍 用法示例代码public class LockTest { public static void main(String[] args) { new LockTest().init(); } private void init() { final OutPuter outputer = new OutPuter(); new Thread(new Ru...原创 2018-04-10 15:40:34 · 162 阅读 · 0 评论 -
线程基础(三)线程池Executors&Callable和future
一 线程池 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的效果。 p...原创 2018-04-10 10:16:47 · 604 阅读 · 0 评论 -
线程基础(二)ThreadLocal实现线程范围内的共享变量
一 ThreadLocal实现线程范围内的共享变量 public class ThreadScopShareData { //线程范围内的共享变量 private static int data = 0; //单个变量线程共享 //private static ThreadLocal<Integer> x = new ThreadLocal<Integer>();...原创 2018-04-09 16:56:37 · 141 阅读 · 0 评论 -
线程基础(一)实现线程两种方式&线程互斥synchronized
一 实现线程两种方式 1.定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。Thread thread = new Thread() { @Override public void run() { while(true) { try { Thread.sleep(500); } c...原创 2018-04-09 09:53:32 · 202 阅读 · 0 评论 -
Lock与synchronized的选择
1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现; 2)synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁; 3)Lock可以让等待锁的线程响应中...原创 2018-05-17 16:57:45 · 131 阅读 · 0 评论