<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>阳光男孩</title>
	<atom:link href="http://www.shiningboys.cn/feed" rel="self" type="application/rss+xml" />
	<link>http://www.shiningboys.cn</link>
	<description>Never give up!</description>
	<lastBuildDate>Sun, 05 Sep 2010 08:49:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>阳光男孩定义</title>
		<link>http://www.shiningboys.cn/archives/70</link>
		<comments>http://www.shiningboys.cn/archives/70#comments</comments>
		<pubDate>Sun, 03 Jan 2010 11:05:56 +0000</pubDate>
		<dc:creator>孤独de枫</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[定义]]></category>
		<category><![CDATA[阳光男孩]]></category>

		<guid isPermaLink="false">http://www.shiningboys.cn/?p=70</guid>
		<description><![CDATA[　　如果能让你身边的人因为你的笑容而感到舒心，因为你的行为而快乐那你就可以算是个阳光男孩了！ 　　凡事总能乐观处之,对待他人能经常微笑,(特别是女生),潇洒,风趣幽默,给人的第一印象就像和煦的阳光照在身上。什么是阳光男孩呢？他们热爱运动、朝气蓬勃、充满活力，可以在校园的各个活动舞台看到他们忙碌的身影；他们爱好丰富，个性鲜明，或许他们就是当代校园中最具代表性的男生了。 　　什么是阳光男孩？什么是让女生疯狂、让男生崇拜？他拥有所有男生梦想的特质，俊美的面容，娴熟的球技，他有疾速的启动，迅捷的突破，他是最好的影子前锋。 　　阳光男孩十大标准 　　衣着整洁 体魄强健 　　举止稳重 坚强执著 　　宽容豁达 幽默风趣 　　乐观开朗 礼貌教养 　　有责任感 照顾弱小]]></description>
		<wfw:commentRss>http://www.shiningboys.cn/archives/70/feed</wfw:commentRss>
		<slash:comments>51</slash:comments>
		</item>
		<item>
		<title>Java多线程Socket操作猜数游戏样例</title>
		<link>http://www.shiningboys.cn/archives/144</link>
		<comments>http://www.shiningboys.cn/archives/144#comments</comments>
		<pubDate>Sun, 05 Sep 2010 08:49:26 +0000</pubDate>
		<dc:creator>孤独de枫</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Socket]]></category>
		<category><![CDATA[多线程]]></category>

		<guid isPermaLink="false">http://www.shiningboys.cn/?p=144</guid>
		<description><![CDATA[1 服务器端程序，接受连接并处理客户端的请求 ServerApp.java package test; import java.io.*; import java.net.*; /** *//** * 服务器端程序 * * @author luxuan310，修正赵学庆。 * */ public class ServerApp &#8230;{ static final int PORT = 9000; private ServerSocket serverSocket; private Socket socket; private BufferedReader netIn; private PrintWriter netOut; public ServerApp() throws IOException &#8230;{ serverSocket = new ServerSocket(PORT); System.out.println(&#8220;server start&#8221;); while (true) &#8230;{ [...]]]></description>
		<wfw:commentRss>http://www.shiningboys.cn/archives/144/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>编写高质量Java代码：Ajax单元测试实践</title>
		<link>http://www.shiningboys.cn/archives/142</link>
		<comments>http://www.shiningboys.cn/archives/142#comments</comments>
		<pubDate>Sun, 05 Sep 2010 08:48:30 +0000</pubDate>
		<dc:creator>孤独de枫</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[高质量]]></category>

		<guid isPermaLink="false">http://www.shiningboys.cn/?p=142</guid>
		<description><![CDATA[您可能从编写 Ajax 应用程序中获得了极大乐趣，但是对它们执行单元测试却着实让人头痛。 　　在本文中，Andrew Glover 着手解决 Ajax 的弱点（其中之一），即应对异步 Web 应用程序执行单元测试的固有挑战。 　　幸运的是，他发现在 Google Web Toolkit 的帮助下，解决这个特殊的代码质量问题要比预想的容易。 　　Ajax 在近期无疑是 Web 开发界最时髦的字眼之一 ?? 　　与 Ajax 相关的工具、框架、书籍以及 Web 站点的剧增就是该技术流行的最好证明。 　　此外，Ajax 应用程序也相当灵巧，不是吗？不过，像任何一个开发过 Ajax 应用程序的人证实的一样，对 Ajax 执行测试真的很不方便。事实上，Ajax 的出现已经从根本上使得许多测试框架和工具失效，因为它们并没有针对异步 Web 应用程序测试进行设计！ 　　有趣的是，某个支持 Ajax 的框架的开发人员注意到了这个限制，并为此做了一些非常新颖的设计：内置的可测试性。除此之外，由于该框架简化了使用 Java? 代码（而不是 JavaScript）创建 Ajax 应用程序，它的起点甚高，并且充分利用了 Java 平台上无可置疑的标准测试框架：JUnit。 　　我所论及的框架当然是非常流行的 Google Web Toolkit，也就是 GWT。在本文中，我将向您展示 GWT 如何实际地利用 Java 兼容性，使 Ajax 应用程序的每个部分都能像与之对应的同步应用程序一样进行测试。 [...]]]></description>
		<wfw:commentRss>http://www.shiningboys.cn/archives/142/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>总结Java部分的框架和开源项目</title>
		<link>http://www.shiningboys.cn/archives/140</link>
		<comments>http://www.shiningboys.cn/archives/140#comments</comments>
		<pubDate>Sun, 05 Sep 2010 08:47:13 +0000</pubDate>
		<dc:creator>孤独de枫</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[框架]]></category>

		<guid isPermaLink="false">http://www.shiningboys.cn/?p=140</guid>
		<description><![CDATA[下面我将为大家总结一下Java部分的框架和开源项目，让您从总的方面对Java部分框架有一定的了解。 　　Spring Framework【Java开源JEE框架】 　　Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的 InversionofControl容器。然而，这仅仅是完整图景中的一部分：Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。Spring提供了唯一的数据访问抽象，包括简单和有效率的JDBC框架，极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/Rmapping解决方案。Spring还提供了唯一的事务管理抽象，它能够在各种底层事务管理技术，例如 JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架，它给POJOs提供了声明式的事务管理和其他企业事务&#8211;如果你需要&#8211;还能实现你自己的aspects。这个框架足够强大，使得应用程序能够抛开EJB的复杂性，同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVCWeb框架。【SpringIDE：Eclipse平台下一个辅助开发插件】 　　 WebWork【Java开源Web开发框架】 　　WebWork是由OpenSymphony组织开发的，致力于组件化和代码重用的拉出式MVC模式J2EEWeb框架。WebWork目前最新版本是2.1，现在的WebWork2.x前身是RickardOberg开发的 WebWork，但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目。Xwork简洁、灵活功能强大，它是一个标准的 Command模式实现，并且完全从web层脱离出来。Xwork提供了很多核心功能：前端拦截机(interceptor)，运行时表单属性验证，类型转换，强大的表达式语言(OGNL–theObjectGraphNotationLanguage)，IoC(InversionofControl倒置控制)容器等。WebWork2建立在Xwork之上，处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP 请求的变成Action(业务层Action类),session(会话)application(应用程序)范围的映射，request请求参数映射。 WebWork2支持多视图表示，视图部分可以使用JSP,Velocity,FreeMarker,JasperReports，XML等。在 WebWork2.2中添加了对AJAX的支持，这支持是构建在DWR与Dojo这两个框架的基础之上.【EclipseWork：用于WebWork辅助开发的一个Eclipse插件】 　　Struts【Java开源Web开发框架】 　　Struts是一个基于 SunJ2EE平台的MVC框架，主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求，简单易用，敏捷迅速，在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(messageresources)整合到一个统一的框架中，开发人员利用其进行开发时不用再自己编码实现全套MVC模式，极大的节省了时间，所以说Struts是一个非常不错的应用框架。【StrutsIDE：用于 Struts辅助开发的一个Eclipse插件】 　　Hibernate【Java开源持久层框架】 　　 Hibernate是一个开放源代码的对象关系映射框架，它对JDBC进行了非常轻量级的对象封装，使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合，既可以在Java的客户端程序实用，也可以在Servlet/JSP的Web应用中使用，最具革命意义的是，Hibernate可以在应用EJB的J2EE架构中取代CMP，完成数据持久化的重任。Eclipse平台下的 Hibernate辅助开发工具:【HibernateSynchronizer】【MiddlegenIDE】 　　Quartz 【Java开源调度框架】 　　Quartz是OpenSymphony开源组织在Jobscheduling领域又一个开源项目, 它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个，百个，甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或EJBs。Quartz的最新版本为Quartz1.5.0。 　　Velocity 【Java开源模板引擎】 　　Velocity是一个基于java的模板引擎(templateengine)。它允许任何人仅仅简单的使用模板语言(templatelanguage)来引用由java代码定义的对象。当Velocity应用于web开发时，界面设计人员可以和 java程序开发人员同步开发一个遵循MVC架构的web站点，也就是说，页面设计人员可以只关注页面的显示效果，而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来，这样为web站点的长期维护提供了便利，同时也为我们在JSP和PHP之外又提供了一种可选的方案。Velocity的能力远不止web站点开发这个领域，例如，它可以从模板(template)产生SQL和PostScript、XML，它也可以被当作一个独立工具来产生源代码和报告，或者作为其他系统的集成组件使用。Velocity也可以为Turbineweb开发架构提供模板服务 (templateservice)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。【VeloEclipse：Velocity在Eclipse平台下的一个辅助开发插件】 　　iBATIS【Java开源持久层框架】 　　使用ibatis提供的ORM机制，对业务逻辑实现人员而言，面对的是纯粹的Java对象，这一层与通过 Hibernate实现ORM而言基本一致，而对于具体的数据操作，Hibernate会自动生成SQL语句，而ibatis则要求开发者编写具体的 SQL语句。相对Hibernate等“全自动”ORM机制而言，ibatis以SQL开发的工作量和数据库移植性上的让步，为系统设计提供了更大的自由空间。作为“全自动”ORM实现的一种有益补充，ibatis的出现显得别具意义。 　　CompiereERP&#038;CRM 【Java开源ERP与CRM系统】 　　CompiereERP&#038;CRM为全球范围内的中小型企业提供综合型解决方案，覆盖从客户管理、供应链到财务管理的全部领域，支持多组织、多币种、多会计模式、多成本计算、多语种、多税制等国际化特性。易于安装、易于实施、易于使用。只需要短短几个小时，您就可以使用申购-采购-发票-付款、报价-订单-发票-收款、产品与定价、资产管理、客户关系、供应商关系、员工关系、经营业绩分析等强大功能了。 　　RollerWeblogger【Java开源Blog博客】 　　这个 weblogging设计得比较精巧，源代码是很好的学习资料。它支持weblogging应有的特性如：评论功能，所见即所得HTML编辑，TrackBack，提供页面模板，RSSsyndication,blogroll管理和提供一个XML-RPC接口。 　　 Eclipse【Java开源IDE】 　　Eclipse平台是IBM向开发源码社区捐赠的开发框架，它之所以出名并不是因为 IBM宣称投入开发的资金总数—4千万美元，而是因为如此巨大的投入所带来的成果：一个成熟的、精心设计的以及可扩展的体系结构。 　　 XPlanner【Java开源项目管理】 　　XPlanner一个基于Web的XP团队计划和跟踪工具。XP独特的开发概念如 iteration、userstories等，XPlanner都提供了相对应的的管理工具，XPlanner支持XP开发流程，并解决利用XP思想来开发项目所碰到的问题。XPlanner特点包括：简单的模型规划，虚拟笔记卡(Virtualnotecards),iterations、 userstories与工作记录的追踪，未完成stories将自动迭代，工作时间追踪，生成团队效率，个人工时报表，SOAP界面支持。 　　HSQLDB【Java开源开源数据库】 　　HSQLDB(HypersonicSQL)是纯Java开发的关系型数据库,并提供 JDBC驱动存取数据。支持ANSI-92标准SQL语法。而且他占的空间很小。大约只有160K,拥有快速的数据库引擎。 　　 [...]]]></description>
		<wfw:commentRss>http://www.shiningboys.cn/archives/140/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>初学者如何开发出高质量J2EE系统</title>
		<link>http://www.shiningboys.cn/archives/136</link>
		<comments>http://www.shiningboys.cn/archives/136#comments</comments>
		<pubDate>Tue, 10 Aug 2010 14:30:03 +0000</pubDate>
		<dc:creator>孤独de枫</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[初学者]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[高质量]]></category>

		<guid isPermaLink="false">http://www.shiningboys.cn/?p=136</guid>
		<description><![CDATA[J2EE学习者越来越多，J2EE本身技术不断在发展，涌现出各种概念，本文章试图从一种容易理解的角度对这些概念向初学者进行解释，以便掌握学习 J2EE学习方向。 首先我们需要知道Java和J2EE是两个不同概念，Java不只是指一种语言，已经代表与微软不同的另外一个巨大阵营，所以Java有时是指一种软件系统的流派，当然目前主要是.NET和Java两大主流体系。 J2EE可以说指Java在数据库信息系统上实现，数据库信息系统从早期的dBase、到Delphi/VB等C/S结构，发展到B /S（Browser浏览器/Server服务器）结构，而J2EE主要是指B/S结构的实现。 J2EE又是一种框架和标准，框架类似API、库的概念，但是要超出它们。如果需要详细了解框架，可先从设计模式开始学习。 J2EE是一个虚的大的概念，J2EE标准主要有三种子技术标准：WEB技术、EJB技术和JMS，谈到J2EE应该说最终要落实到这三个子概念上。 这三种技术的每个技术在应用时都涉及两个部分：容器部分和应用部分，Web容器也是指Jsp/Servlet容器，你如果要开发一个Web应用，无论是编译或运行，都必须要有Jsp/Servlet库或API支持（除了JDK/J2SE以外）。 Web技术中除了Jsp/Servlet技术外，还需要JavaBeans或Java Class实现一些功能或者包装携带数据，所以Web技术最初裸体简称为Jsp/Servlet+JavaBeans系统。 谈到JavaBeans技术，就涉及到组件构件技术（component），这是Java的核心基础部分，很多软件设计概念（设计模式）都是通过 JavaBeans实现的。 JavaBeans不属于J2EE概念范畴中，如果一个JavaBeans对象被Web技术（也就是Jsp/Servlet）调用，那么 JavaBeans就运行在J2EE的Web容器中；如果它被EJB调用，它就运行在EJB容器中。 EJB（企业JavaBeans）是普通JavaBeans的一种提升和规范，因为企业信息系统开发中需要一个可伸缩的性能和事务、安全机制，这样能保证企业系统平滑发展，而不是发展到一种规模重新更换一套软件系统。 至此，JavaBeans组件发展到EJB后，并不是说以前的那种JavaBeans形式就消失了，这就自然形成了两种JavaBeans技术：EJB 和POJO，POJO完全不同于EJB概念，指的是普通JavaBeans，而且这个JavaBeans不依附某种框架，或者干脆可以说：这个 JavaBeans是你为这个应用程序单独开发创建的。 J2EE应用系统开发工具有很多：如JBuilder、Eclipse等，这些IDE首先是Java开发工具，也就是说，它们首要基本功能是可以开发出JavaBeans或Java class，但是如果要开发出J2EE系统，就要落实到要么是Web技术或EJB技术，那么就有可能要一些专门模块功能(如eclipse需要 lomboz插件)，最重要的是，因为J2EE系统区分为容器和应用两个部分，所以，在任何开发工具中开发J2EE都需要指定J2EE容器。 J2EE容器分为WEB容器和EJB容器，Tomcat/Resin是Web容器；JBoss是EJB容器+Web容器等，其中Web容器直接使用 Tomcat实现的。所以你开发的Web应用程序可以在上面两种容器运行，而你开发的Web+EJB应用则只可以在JBoss服务器上运行，商业产品 Websphere/Weblogic等和JBoss属于同一种性质。 J2EE容器也称为J2EE服务器，大部分时它们概念是一致的。 如果你的J2EE应用系统的数据库连接是通过JNDI获得，也就是说是从容器中获得，那么你的J2EE应用系统基本与数据库无关，如果你在你的 J2EE 应用系统耦合了数据库JDBC驱动的配置，那么你的J2EE应用系统就有数据库概念色彩，作为一个成熟需要推广的J2EE应用系统，不推荐和具体数据库耦合，当然这其中如何保证J2EE应用系统运行性能又是体现你的设计水平了。 衡量J2EE应用系统设计开发水平高低的标准就是：解耦性；你的应用系统各个功能是否能够彻底脱离？是否不相互依赖，也只有这样，才能体现可维护性、可拓展性的软件设计目标。 为了达到这个目的，诞生各种框架概念，J2EE框架标准将一个系统划分为WEB和EJB主要部分，当然我们有时不是以这个具体技术区分，而是从设计上抽象为表现层、服务层和持久层，这三个层次从一个高度将J2EE分离开来，实现解耦目的。 因此，我们实际编程中，也要将自己的功能向这三个层次上靠，做到大方向清楚，泾渭分明，但是没有技术上约束限制要做到这点是很不容易的，因此我们还是必须借助J2EE具体技术来实现，这时，你可以使用EJB规范实现服务层和持久层，Web技术实现表现层； EJB为什么能将服务层从Jsp/Servlet手中分离出来，因为它对JavaBeans编码有强制的约束，现在有一种对JavaBeans弱约束，使用Ioc模式实现的（当然EJB 3.0也采取这种方式），在Ioc模式诞生前，一般都是通过工厂模式来对JavaBeans约束，形成一个服务层，这也是是Jive这样开源论坛设计原理之一。 由此，将服务层从表现层中分离出来目前有两种可选架构选择：管理普通JavaBeans（POJO）框架(如Spring、 JdonFramework)以及管理EJB的EJB框架，因为EJB不只是框架，还是标准，而标准可以扩展发展，所以，这两种区别将来是可能模糊，被纳入同一个标准了。　但是，个人认为：标准制定是为某个目的服务的，总要牺牲一些换取另外一些，所以，这两种架构会长时间并存。 这两种架构分歧也曾经诞生一个新名词：完全POJO的系统也称为轻量级系统(lightweight)，其实这个名词本身就没有一个严格定义，更多是一个吸引人的招牌，轻量是指容易学习容易使用吗？按照这个定义，其实轻量Spring等系统并不容易学习；而且EJB 3.0（依然叫EJB）以后的系统是否可称为轻量级了呢？ 前面谈了服务层框架，使用服务层框架可以将JavaBeans从 Jsp/Servlet中分离出来，而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离，这部分JavaBeans主要负责显示相关，一般是通过标签库（taglib）实现，不同框架有不同自己的标签库，Struts是应用比较广泛的一种表现层框架。 这样，表现层和服务层的分离是通过两种框架达到目的，剩余的就是持久层框架了，通过持久层的框架将数据库存储从服务层中分离出来是其目的，持久层框架有两种方向：直接自己编写JDBC等SQL语句（如iBatis）；使用O/R Mapping技术实现的Hibernate和JDO技术；当然还有EJB中的实体Bean技术。 持久层框架目前呈现百花齐放，各有优缺点的现状，所以正如表现层框架一样，目前没有一个框架被指定为标准框架，当然，表现层框架现在又出来了一个 JSF，它代表的页面组件概念是一个新的发展方向，但是复杂的实现让人有些忘而却步。 在所有这些J2EE技术中，虽然SUN公司发挥了很大的作用，不过总体来说：网络上有这样一个评价：SUN的理论天下无敌；SUN的产品用起来撞墙；对于初学者，特别是那些试图通过或已经通过SUN认证的初学者，赶快摆脱SUN的阴影，立即开溜，使用开源领域的产品来实现自己的应用系统。 最后，你的J2EE应用系统如果采取上面提到的表现层、服务层和持久层的框架实现，基本你也可以在无需深刻掌握设计模式的情况下开发出一个高质量的应用系统了。 还要注意的是: 开发出一个高质量的J2EE系统还需要正确的业务需求理解，那么域建模提供了一种比较切实可行的正确理解业务需求的方法，相关详细知识可从UML角度结合理解。 当然，如果你想设计自己的行业框架，那么第一步从设计模式开始吧，因为设计模式提供你一个实现JavaBeans或类之间解耦参考实现方法，当你学会了系统基本单元JavaBean或类之间解耦时，那么系统模块之间的解耦你就可能掌握，进而你就可以实现行业框架的提炼了，这又是另外一个发展方向了。 以上理念可以总结为一句话： J2EE开发三件宝: Domain Model（域建模）、patterns（模式）和framework（框架）。 推荐一套高质量的J2EE开源系统： JPestore]]></description>
		<wfw:commentRss>http://www.shiningboys.cn/archives/136/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>浅谈Java多线程的同步问题</title>
		<link>http://www.shiningboys.cn/archives/134</link>
		<comments>http://www.shiningboys.cn/archives/134#comments</comments>
		<pubDate>Tue, 10 Aug 2010 14:26:53 +0000</pubDate>
		<dc:creator>孤独de枫</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[同步]]></category>
		<category><![CDATA[多线程]]></category>

		<guid isPermaLink="false">http://www.shiningboys.cn/?p=134</guid>
		<description><![CDATA[多线程的同步依靠的是对象锁机制，synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。 下面以一个简单的实例来进行对比分析。实例要完成的工作非常简单，就是创建10个线程，每个线程都打印从0到99这100个数字，我们希望线程之间不会出现交叉乱序打印，而是顺序地打印。 先来看第一段代码，这里我们在run()方法中加入了synchronized关键字，希望能对run方法进行互斥访问，但结果并不如我们希望那样，这是因为这里synchronized锁住的是this对象，即当前运行线程对象本身。代码中创建了10个线程，而每个线程都持有this对象的对象锁，这不能实现线程的同步。 代码 package com.vista; class MyThread implements java.lang.Runnable { private int threadId; public MyThread(int id) { this.threadId = id; } @Override public synchronized void run() { for (int i = 0; i < 100; ++i) { System.out.println(&#8220;Thread ID: &#8221; + this.threadId + &#8221; : &#8221; + i); } } } public class ThreadDemo [...]]]></description>
		<wfw:commentRss>http://www.shiningboys.cn/archives/134/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAVA 线程池使用</title>
		<link>http://www.shiningboys.cn/archives/132</link>
		<comments>http://www.shiningboys.cn/archives/132#comments</comments>
		<pubDate>Tue, 10 Aug 2010 14:26:10 +0000</pubDate>
		<dc:creator>孤独de枫</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[线程池]]></category>

		<guid isPermaLink="false">http://www.shiningboys.cn/?p=132</guid>
		<description><![CDATA[package com.tender.nmem.eris.drawexpert.service.impl; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.apache.commons.collections.map.ListOrderedMap; /** * 类：线程池类，控制程序线程实例个数,并实例线程 * @author yangtb * 时间：2009/09/14 * */ public class ThreadPool { private ExecutorService exe=null;//线程池 public ThreadPool(int pool_size) { exe=Executors.newFixedThreadPool(pool_size);//创建线程池 System.out.println(&#8220;the server is ready&#8221;); } /** * 运行循环实例线程，根据要实例的线程个数，传入条件ID * @param worknum */ public void server(int worknum,String id) { int i=0; while(i]]></description>
		<wfw:commentRss>http://www.shiningboys.cn/archives/132/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>女子凌晨ATM机取款遇袭 被捅十几刀 制伏歹徒后身亡</title>
		<link>http://www.shiningboys.cn/archives/130</link>
		<comments>http://www.shiningboys.cn/archives/130#comments</comments>
		<pubDate>Tue, 13 Jul 2010 08:56:20 +0000</pubDate>
		<dc:creator>孤独de枫</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[ATM]]></category>
		<category><![CDATA[遇袭]]></category>

		<guid isPermaLink="false">http://www.shiningboys.cn/?p=130</guid>
		<description><![CDATA[女子ATM机取款遇袭 被捅十几刀 制伏歹徒后身亡 以后半夜出去要留意了啊！！！]]></description>
		<wfw:commentRss>http://www.shiningboys.cn/archives/130/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>太平洋战争片头——非常精彩</title>
		<link>http://www.shiningboys.cn/archives/125</link>
		<comments>http://www.shiningboys.cn/archives/125#comments</comments>
		<pubDate>Tue, 13 Jul 2010 08:48:28 +0000</pubDate>
		<dc:creator>孤独de枫</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[太平洋战争]]></category>
		<category><![CDATA[片头]]></category>

		<guid isPermaLink="false">http://www.shiningboys.cn/?p=125</guid>
		<description><![CDATA[最近看完了《太平洋战争》，感觉很精彩啊~碳素笔的创意很新颖！狂顶！]]></description>
		<wfw:commentRss>http://www.shiningboys.cn/archives/125/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>无API侵入的JIOPi模块化编程风格达成</title>
		<link>http://www.shiningboys.cn/archives/123</link>
		<comments>http://www.shiningboys.cn/archives/123#comments</comments>
		<pubDate>Tue, 29 Jun 2010 00:55:09 +0000</pubDate>
		<dc:creator>孤独de枫</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[JIOPi]]></category>
		<category><![CDATA[编程风格]]></category>

		<guid isPermaLink="false">http://www.shiningboys.cn/?p=123</guid>
		<description><![CDATA[无API侵入的JIOPi模块化编程风格达成 ——纯POJO风格实现简单邮件发送API调用 API侵入是任何框架都很难避免的问题，而被侵入框架API的程序也很容易被该框架绑定，很难脱离框架运行环境。JIOPi作为一种IOP编程和模块化编程风格(而非框架)，一直努力减少额外API的引入，非运行时标注让JIOPi模块完全与POJO兼容，通过IoC框架整合，避免调用代码中再引入额外API。然而IoC框架整合也只是将JIOPi的API从用户的代码中转移到了IoC框架配置文件中，并且需要引入IoC框架。JIOPi 0.4引入了全新的类重定义代码风格，完全避免了使用JIOPi模块而需要引入JIOPi API的问题，真正将JIOPi从框架变为编程风格，将编程风格的实现变为透明实现，你要做的，只是将一个不到50k的Jar包放在lib目录中，然后在应用程序启动后尽早调用JIOPi的初始化程序函数。  注：JDK1.5无法实现上下文环境(ContextClassLoader)中的类重定义，这个特性需要JDK1.6的支持。 下面就以调用一个简单邮件发送API为例来说明JIOPi v0.4带来的无API侵入风格的模块化编程。相关源码请下载JIOPi-iBean-0.4.0.0-src.zip源码包 http://code.google.com/p/ibean/downloads/list 邮件发送API定义如下： MailSender.java Java代码 package org.jiopi.blueprint.mailsender;       import org.jiopi.framework.annotation.blueprint.RegisterControlPanel;       @Version   @RegisterControlPanel(&#8220;jiopi.MailSender&#8221;)    public interface MailSender {           @RegisterControlPanel(&#8220;sendMail&#8221;)        public String sendMail(String to,String subject,String message) throws SendMailException;           public String sendMail(String to,String subject,String html,String text) throws SendMailException;                @RegisterControlPanel(&#8220;createNewTextMail&#8221;)        public Mail createNewTextMail();                @RegisterControlPanel(&#8220;createNewHtmlMail&#8221;)        public Mail createNewHtmlMail();                public String getHostName();                public String getAuthenticationUserName();                public String getAuthenticationPassword();    [...]]]></description>
		<wfw:commentRss>http://www.shiningboys.cn/archives/123/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
