﻿<?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-太阳雨-随笔分类-javaEE</title><link>http://www.blogjava.net/sy1214520/category/32330.html</link><description>痛并快乐着</description><language>zh-cn</language><lastBuildDate>Sat, 06 Mar 2010 00:17:21 GMT</lastBuildDate><pubDate>Sat, 06 Mar 2010 00:17:21 GMT</pubDate><ttl>60</ttl><item><title>XFire生火指南(下)转</title><link>http://www.blogjava.net/sy1214520/archive/2010/03/05/314587.html</link><dc:creator>小虫旺福</dc:creator><author>小虫旺福</author><pubDate>Fri, 05 Mar 2010 03:44:00 GMT</pubDate><guid>http://www.blogjava.net/sy1214520/archive/2010/03/05/314587.html</guid><wfw:comment>http://www.blogjava.net/sy1214520/comments/314587.html</wfw:comment><comments>http://www.blogjava.net/sy1214520/archive/2010/03/05/314587.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sy1214520/comments/commentRss/314587.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sy1214520/services/trackbacks/314587.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/sy1214520/archive/2010/03/05/314587.html'>阅读全文</a><img src ="http://www.blogjava.net/sy1214520/aggbug/314587.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sy1214520/" target="_blank">小虫旺福</a> 2010-03-05 11:44 <a href="http://www.blogjava.net/sy1214520/archive/2010/03/05/314587.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XFire 最新生火指南（上）转</title><link>http://www.blogjava.net/sy1214520/archive/2010/03/05/314586.html</link><dc:creator>小虫旺福</dc:creator><author>小虫旺福</author><pubDate>Fri, 05 Mar 2010 03:43:00 GMT</pubDate><guid>http://www.blogjava.net/sy1214520/archive/2010/03/05/314586.html</guid><wfw:comment>http://www.blogjava.net/sy1214520/comments/314586.html</wfw:comment><comments>http://www.blogjava.net/sy1214520/archive/2010/03/05/314586.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sy1214520/comments/commentRss/314586.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sy1214520/services/trackbacks/314586.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/sy1214520/archive/2010/03/05/314586.html'>阅读全文</a><img src ="http://www.blogjava.net/sy1214520/aggbug/314586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sy1214520/" target="_blank">小虫旺福</a> 2010-03-05 11:43 <a href="http://www.blogjava.net/sy1214520/archive/2010/03/05/314586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XFire与Spring结合的几种方式</title><link>http://www.blogjava.net/sy1214520/archive/2010/03/05/314584.html</link><dc:creator>小虫旺福</dc:creator><author>小虫旺福</author><pubDate>Fri, 05 Mar 2010 03:41:00 GMT</pubDate><guid>http://www.blogjava.net/sy1214520/archive/2010/03/05/314584.html</guid><wfw:comment>http://www.blogjava.net/sy1214520/comments/314584.html</wfw:comment><comments>http://www.blogjava.net/sy1214520/archive/2010/03/05/314584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sy1214520/comments/commentRss/314584.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sy1214520/services/trackbacks/314584.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/sy1214520/archive/2010/03/05/314584.html'>阅读全文</a><img src ="http://www.blogjava.net/sy1214520/aggbug/314584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sy1214520/" target="_blank">小虫旺福</a> 2010-03-05 11:41 <a href="http://www.blogjava.net/sy1214520/archive/2010/03/05/314584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用XFire插件创建独立的Webservice</title><link>http://www.blogjava.net/sy1214520/archive/2010/03/05/314582.html</link><dc:creator>小虫旺福</dc:creator><author>小虫旺福</author><pubDate>Fri, 05 Mar 2010 03:39:00 GMT</pubDate><guid>http://www.blogjava.net/sy1214520/archive/2010/03/05/314582.html</guid><wfw:comment>http://www.blogjava.net/sy1214520/comments/314582.html</wfw:comment><comments>http://www.blogjava.net/sy1214520/archive/2010/03/05/314582.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sy1214520/comments/commentRss/314582.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sy1214520/services/trackbacks/314582.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/sy1214520/archive/2010/03/05/314582.html'>阅读全文</a><img src ="http://www.blogjava.net/sy1214520/aggbug/314582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sy1214520/" target="_blank">小虫旺福</a> 2010-03-05 11:39 <a href="http://www.blogjava.net/sy1214520/archive/2010/03/05/314582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OGNL —— 数据运转的催化剂</title><link>http://www.blogjava.net/sy1214520/archive/2010/02/01/311466.html</link><dc:creator>小虫旺福</dc:creator><author>小虫旺福</author><pubDate>Mon, 01 Feb 2010 02:04:00 GMT</pubDate><guid>http://www.blogjava.net/sy1214520/archive/2010/02/01/311466.html</guid><wfw:comment>http://www.blogjava.net/sy1214520/comments/311466.html</wfw:comment><comments>http://www.blogjava.net/sy1214520/archive/2010/02/01/311466.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sy1214520/comments/commentRss/311466.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sy1214520/services/trackbacks/311466.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/sy1214520/archive/2010/02/01/311466.html'>阅读全文</a><img src ="http://www.blogjava.net/sy1214520/aggbug/311466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sy1214520/" target="_blank">小虫旺福</a> 2010-02-01 10:04 <a href="http://www.blogjava.net/sy1214520/archive/2010/02/01/311466.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Java web服务器内使用url rewrite（链接）</title><link>http://www.blogjava.net/sy1214520/archive/2010/02/01/311457.html</link><dc:creator>小虫旺福</dc:creator><author>小虫旺福</author><pubDate>Mon, 01 Feb 2010 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/sy1214520/archive/2010/02/01/311457.html</guid><wfw:comment>http://www.blogjava.net/sy1214520/comments/311457.html</wfw:comment><comments>http://www.blogjava.net/sy1214520/archive/2010/02/01/311457.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sy1214520/comments/commentRss/311457.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sy1214520/services/trackbacks/311457.html</trackback:ping><description><![CDATA[<font style="background-color: #cce8cf">http://www.javaeye.com/topic/53834<br />
mark<br />
</font>
<img src ="http://www.blogjava.net/sy1214520/aggbug/311457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sy1214520/" target="_blank">小虫旺福</a> 2010-02-01 09:34 <a href="http://www.blogjava.net/sy1214520/archive/2010/02/01/311457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Digester，对象和xml进行转换</title><link>http://www.blogjava.net/sy1214520/archive/2009/03/06/258271.html</link><dc:creator>小虫旺福</dc:creator><author>小虫旺福</author><pubDate>Fri, 06 Mar 2009 09:26:00 GMT</pubDate><guid>http://www.blogjava.net/sy1214520/archive/2009/03/06/258271.html</guid><wfw:comment>http://www.blogjava.net/sy1214520/comments/258271.html</wfw:comment><comments>http://www.blogjava.net/sy1214520/archive/2009/03/06/258271.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sy1214520/comments/commentRss/258271.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sy1214520/services/trackbacks/258271.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/sy1214520/archive/2009/03/06/258271.html'>阅读全文</a><img src ="http://www.blogjava.net/sy1214520/aggbug/258271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sy1214520/" target="_blank">小虫旺福</a> 2009-03-06 17:26 <a href="http://www.blogjava.net/sy1214520/archive/2009/03/06/258271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用cucurrent 的Callable 改进方法调用性能 </title><link>http://www.blogjava.net/sy1214520/archive/2008/11/02/238177.html</link><dc:creator>小虫旺福</dc:creator><author>小虫旺福</author><pubDate>Sun, 02 Nov 2008 06:52:00 GMT</pubDate><guid>http://www.blogjava.net/sy1214520/archive/2008/11/02/238177.html</guid><wfw:comment>http://www.blogjava.net/sy1214520/comments/238177.html</wfw:comment><comments>http://www.blogjava.net/sy1214520/archive/2008/11/02/238177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sy1214520/comments/commentRss/238177.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sy1214520/services/trackbacks/238177.html</trackback:ping><description><![CDATA[<p align="center">&nbsp;</p>
在有些方法里， 比如登陆，一般需要顺序调用多个系统功能才能完成初始化操作.<br />
比如 安全校验-》获取用户权限-》获取用户设置信息-》获取系统字典 等等， 在某些EAI模式的应用里，这些调用可能都是远程调用，每个调用时间可能从0.5秒到数秒不等， 这样累计下来用户一个登陆操作，在后台处理时间可能就有3，4秒，加上网络传输延时，会主观上给用户造成系统很慢的感觉。<br />
<br />
在单个方法调用效率无法改进的前提下，一个简单的办法是将调用方式由串行改为并行，即以多个thread分别去完成方法调用，最后汇总。<br />
<br />
在java 5以前，因为线程的特性限制，必须手工编码实现线程完成状态的调用检查。<br />
<br />
比如<br />
&nbsp;// thread&nbsp;<br />
public void run() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;......<br />
&nbsp;&nbsp;&nbsp;finished = true;<br />
&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;public boolean isFinished() {<br />
&nbsp;&nbsp;&nbsp;return finished;<br />
&nbsp;&nbsp;}<br />
<br />
<br />
// 以阻塞循环的方式检查是否执行完毕<br />
while(!remoteCall.isFinished()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(100);<br />
&nbsp;&nbsp;&nbsp;} catch (InterruptedException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
这样的代码是繁琐，较低效率，也容易出错的，尤其在线程多于2个的时候。而在服务器方代码中过多的线程使用又可能会导致内存溢出和资源泄露。 <br />
<br />
今天翻书的时候发现java 5中的cucurrent包对此进行了改进 继承自Callable 的类有能力将执行结果返回，并且可以自行检查执行是否结束。<br />
<br />
&nbsp; public class RandomPrimeSearch implements Callable&lt;BigInteger&gt; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public BigInteger call( ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // do&nbsp;operation here<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return BigInteger.probablePrime(bitSize, prng);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp; }<br />
<br />
&nbsp; FutureTask&lt;BigInteger&gt; task = &nbsp;&nbsp;&nbsp; new FutureTask&lt;BigInteger&gt;(new RandomPrimeSearch(512));&nbsp; //需要利用泛型模板返回处理结果<br />
&nbsp;&nbsp;new Thread(task).start( );<br />
<br />
&nbsp; BigInteger result = task.get( );&nbsp; //此处会自动判断是否执行结束，未结束会继续等待。也可以设定最大等待时间<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; //为了提高效率 也可以使用service方式调用<br />
&nbsp;&nbsp;&nbsp; ExecutorService service = Executors.newFixedThreadPool(5);<br />
<br />
&nbsp;&nbsp;&nbsp; Future&lt;BigInteger&gt; prime1 = service.submit(new RandomPrimeSearch(512));<br />
<br />
<br />
这样一来，使用这种并发模式处理代码就容易多了。程序可以简单的修改为这样的结构<br />
remoateCall1 = doRemoteCall1();&nbsp; // 启动线程1 将方法处理以封装到线程中<br />
remoateCall2 = doRemoteCall2();&nbsp; // 启动线程2 <br />
<br />
remoteCall1.get().getUserSetting() ;<br />
remoteCall2.get().getDictionaryList();&nbsp;<br />
....<br />
<br />
呵呵，基本和顺序执行时差不多，代码修改量比较小。<br />
<br />
java 5中引入了线程执行服务ExecutorService 的概念以后， 如果以线程池的方式执行线程调用，资源消耗会大幅度减少，所以不用太担心并发处理会产生过多的系统负荷。<br />
<img src ="http://www.blogjava.net/sy1214520/aggbug/238177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sy1214520/" target="_blank">小虫旺福</a> 2008-11-02 14:52 <a href="http://www.blogjava.net/sy1214520/archive/2008/11/02/238177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA操作大型文本文件</title><link>http://www.blogjava.net/sy1214520/archive/2008/11/02/238176.html</link><dc:creator>小虫旺福</dc:creator><author>小虫旺福</author><pubDate>Sun, 02 Nov 2008 06:51:00 GMT</pubDate><guid>http://www.blogjava.net/sy1214520/archive/2008/11/02/238176.html</guid><wfw:comment>http://www.blogjava.net/sy1214520/comments/238176.html</wfw:comment><comments>http://www.blogjava.net/sy1214520/archive/2008/11/02/238176.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sy1214520/comments/commentRss/238176.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sy1214520/services/trackbacks/238176.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在前面的废话不想看的可以skip-----由于工作需要，经常需要打开和查询250M左右的文本文件（总行数超过250万行）分析日志，公司发的笔记本内存才512M，地球人都知道，这样的电脑根本不能胜任。不知道有没有人和我一样倒霉，面对这么庞大的文件，曾经让我很无奈，很彷徨。从寻找优秀的类似notepad这样的文本工具，企图通过工具来提高下速度，其中JIURL这个记事本工具，我个人觉得很好，它陪我走了好...&nbsp;&nbsp;<a href='http://www.blogjava.net/sy1214520/archive/2008/11/02/238176.html'>阅读全文</a><img src ="http://www.blogjava.net/sy1214520/aggbug/238176.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sy1214520/" target="_blank">小虫旺福</a> 2008-11-02 14:51 <a href="http://www.blogjava.net/sy1214520/archive/2008/11/02/238176.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>