并发相关

今天看到一篇文章,和我看《Thinking in java》时的笔记很相似,便转过来了,作为《Thinking in java》并发这一块的总结

转自:http://wangyang0311.iteye.com/blog/707894

1:实现Runnable接口并编写run()方法 
2:Thread.yield()的含义是对线程调度器的一种建议,通常是切换线程 
3:ExecutorService是具有生命周期的Executor,CachedThreadPool为每个任务创建一个线程,而FixedThreadPool使用了有限的线程集来执行任务,SingleThreadExecutor是数量为1的FixedThreadPool 
4:Callable接口能在任务完成时返回一个值 
5:Executor的submit()方法会产生Future对象,isDone()检查该对象是否完成,get()获取结果 
6:Thread可以用setPriority()方法调整优先级,有MAX_PRIORITY,NORM_PRIORITY,MIN_PRIORITY 
7:在启动之前调用线程的setDaemon(true)方法可以将其设置为后台线程,isDaemon()方法确定线程是否是后台线程,任何后台线程创建的线程都是后台线程 
8:某线程在另一个线程t上调用t.join(),则此线程将被挂起,直到目标线程t结束才恢复,即t.isAlive()返回为假,或者在join()上带一个超时参数 
9:使用并发时,将域设为private非常重要,因为synchronized关键字不能防止其他任务直接访问域 
10:Brain同步规则:如果你正在写一个变量,它可能接下来将被另一个线程读取,或者正在读取一个上一次已经被另一个线程写过的变量,那么你必须使用同步,并且读写线程都必须用相同的监视器锁同步 
11:Lock对象相比synchronized缺乏优雅但更加灵活,ReentranLock允许尝试获取但最终未获取锁,以便决定是否执行其他任务 
12:宁愿使用同步控制块而不是对整个方法进行同步控制,使得其他线程能更多的访问 
13:ThreadLocal对象为每个单独线程分配自己的存储,不会出现竞争条件 
14:新的concurrent类库避免对Thread对象的直接操作,尽量通过Executor来执行所有操作,由submit()返回的Future对象,调用cancel(true)方法可以终端由Executor启动的单个线程 
15:能中断sleep()的调用,不能中断I/O操作或synchronized锁 
16:无论何时,只要任务以不可中断的方式被阻塞,都有潜在锁住程序的可能,而ReentranLock上阻塞的任务具有可以被中断的能力,这与用synchronized阻塞任务完全不同 
17:调用notifyAll()比调用notify()更安全,反之则是一种优化 
18:同步队列是比wait()和notifyAll()高级的协作,java.util.BlockingQueue接口提供了该队列,可以使用LinkedBlockingQueue(无界)或者ArrayBlockingQueue(固定大小),同步队列在任何时刻只允许一个任务插入或移除元素 
19:CyclicBarrier适用于这样的情况:你希望创建一组任务,它们并行地执行工作,然后在进行下一个步骤前等待,直至所有任务完成(有点像join),非常像CountDownLatch,只是后者是触发一次的事件,而CyclicBarrier可以多次重用。(赛马游戏) 
20:DelayQueue,有序无界BlockingQueue,到期才能取走对象;PriorityBlockingQueue,优先级队列 
21:ScheduledThreadPoolExecutor设置计划的运行时间 
22:Semaphore允许n个任务同时访问资源 
23:Exchanger使得两个对象互换栅栏 
24:ReadWriteLock对不频繁写入,频繁读出情况进行优化 
25:原子类:AtomicInteger,AtomicLong,AtomicReference 
26:免锁容器:ConcurrentHashMap,CopyOnWriteArrayList

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值