﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Doctoryang-随笔分类-CoreJava</title><link>http://www.blogjava.net/doctoryang/category/55110.html</link><description>业精于勤荒于嬉！</description><language>zh-cn</language><lastBuildDate>Tue, 06 Sep 2016 23:35:36 GMT</lastBuildDate><pubDate>Tue, 06 Sep 2016 23:35:36 GMT</pubDate><ttl>60</ttl><item><title>JDK5线程并发包使用整理</title><link>http://www.blogjava.net/doctoryang/archive/2016/09/06/431757.html</link><dc:creator>Doctoryang</dc:creator><author>Doctoryang</author><pubDate>Tue, 06 Sep 2016 09:02:00 GMT</pubDate><guid>http://www.blogjava.net/doctoryang/archive/2016/09/06/431757.html</guid><wfw:comment>http://www.blogjava.net/doctoryang/comments/431757.html</wfw:comment><comments>http://www.blogjava.net/doctoryang/archive/2016/09/06/431757.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/doctoryang/comments/commentRss/431757.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/doctoryang/services/trackbacks/431757.html</trackback:ping><description><![CDATA[<p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">JDK5线程并发包</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">1）AtomicInteger</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">使用原子方式更新int值</span></p><p><br /></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">2）创建线程池</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">a)创建固定大小的线程池</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">ExecutorService threadPool = Executors.newFixedThreadPool(10);//创建一个有10个线程的线程池</span></p><p><br /></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">b)创建缓存线程池</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">Executors.newCachedThreadPool();</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">创建一个可根据需要创建新线程的线程池,可自动调整线程的多少</span></p><p><br /></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">c)创建单线程的线程池</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">Executors.newSingleThreadExecutor();</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">该线程池里面只有一个线程，如果死掉了也可以自动再创建一个,保证永远有一个</span></p><p><br /></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">d)创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(3);</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">threadPool.schedule(Runnable command,long delay,TimeUnit unit)</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">创建并执行在给定延迟后启用的一次性操作</span></p><p><br /></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">threadPool.scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit)</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期.</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">也就是将在initialDelay后开始执行,然后在initialDelay+period后执行,接着在initialDelay + 2 * period后执行,依此类推</span></p><p><br /></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">不管哪种创建方式其实都是由ThreadPoolExecutor类来实现的</span></p><p><br /></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">3）Callable&amp;Future</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">a)Future取得的结果类型和Callable返回的结果类型必须一致，这是通过泛型来实现的。</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">b)Callable要采用ExecutorSevice的submit方法提交，返回的future对象可以取消任务。</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">c)CompletionService用于提交一组Callable任务，其take方法返回已完成的一个Callable任务对应的Future对象。</span></p><p><br /></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">4）Lock&amp;Condition</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">Lock ---&gt; synchronized</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">Lock lock = new ReentrantLock();</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">ReadWriteLock rwlock = new ReentrantReadWriteLock();</span></p><p><br /></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">private Condition condition = lock.newCondition();</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">condition.await();&nbsp; ---&gt; wait()</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">condition.signal(); ---&gt; notify()</span></p><p><br /></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">5）Semaphore</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">final Semaphore semaphore = new Semaphore(3);</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;"><br /></span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">6）CyclicBarrier</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">7）CountDownLatch</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">8）Exchanger</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">9）ArrayBlockingQueue（阻塞队列）</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">10）ConcurrentHashMap</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">CopyOnWriteArrayList</span></p><p><span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;">CopyOnWriteArraySet</span></p><img src ="http://www.blogjava.net/doctoryang/aggbug/431757.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/doctoryang/" target="_blank">Doctoryang</a> 2016-09-06 17:02 <a href="http://www.blogjava.net/doctoryang/archive/2016/09/06/431757.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSR303</title><link>http://www.blogjava.net/doctoryang/archive/2016/09/06/aaa.html</link><dc:creator>Doctoryang</dc:creator><author>Doctoryang</author><pubDate>Tue, 06 Sep 2016 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/doctoryang/archive/2016/09/06/aaa.html</guid><wfw:comment>http://www.blogjava.net/doctoryang/comments/431754.html</wfw:comment><comments>http://www.blogjava.net/doctoryang/archive/2016/09/06/aaa.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/doctoryang/comments/commentRss/431754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/doctoryang/services/trackbacks/431754.html</trackback:ping><description><![CDATA[<div class="showContent">
    		  <p><span style="text-decoration: none; font-family: Arial; font-size: 10pt; color: #000000;">Hibernate Validator<br /></span></p><p><a href="http://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html_single/" style="text-decoration:underline;font-family:'微软雅黑', 'Microsoft YaHei';font-size:12px;color:#000000;" target="_blank"><span style="font-family: Arial; font-size: 10pt; color: #000000;">http://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html_single/</span></a></p>
    		</div><img src ="http://www.blogjava.net/doctoryang/aggbug/431754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/doctoryang/" target="_blank">Doctoryang</a> 2016-09-06 16:40 <a href="http://www.blogjava.net/doctoryang/archive/2016/09/06/aaa.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>