﻿<?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-min-water</title><link>http://www.blogjava.net/min-water/</link><description>如果一个人不知道他要驶向哪个码头，那么任何风都不会是顺风。</description><language>zh-cn</language><lastBuildDate>Tue, 12 May 2026 22:29:11 GMT</lastBuildDate><pubDate>Tue, 12 May 2026 22:29:11 GMT</pubDate><ttl>60</ttl><item><title>初学网络编程的两个小程序（二）----TCP/IP</title><link>http://www.blogjava.net/min-water/articles/337958.html</link><dc:creator>Mineralwasser</dc:creator><author>Mineralwasser</author><pubDate>Fri, 12 Nov 2010 15:57:00 GMT</pubDate><guid>http://www.blogjava.net/min-water/articles/337958.html</guid><wfw:comment>http://www.blogjava.net/min-water/comments/337958.html</wfw:comment><comments>http://www.blogjava.net/min-water/articles/337958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/min-water/comments/commentRss/337958.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/min-water/services/trackbacks/337958.html</trackback:ping><description><![CDATA[<p>经过一个多月枯燥的Java编程基础学习，终于学到net了，呵呵.. .. ..挺好玩 <p>上服务器端程序： <div class="cnblogs_code"><pre><img id="Code_Closed_Image_480561" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_480561').style.display='none'; document.getElementById('Code_Open_Image_480561').style.display='inline'; document.getElementById('Code_Open_Text_480561').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_480561" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_480561').style.display='none'; getElementById('Code_Closed_Image_480561').style.display='inline'; getElementById('Code_Closed_Text_480561').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_480561" class="cnblogs_code_Collapse">TestTCPServer</span><span style="display: none" id="Code_Open_Text_480561">
<span style="color: #0000ff">package</span> socketdemo;

<span style="color: #0000ff">import</span> java.io.DataOutputStream;
<span style="color: #0000ff">import</span> java.io.IOException;
<span style="color: #0000ff">import</span> java.net.ServerSocket;
<span style="color: #0000ff">import</span> java.net.Socket;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> TestTCPServer {
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args) <span style="color: #0000ff">throws</span> IOException {
		ServerSocket ss = <span style="color: #0000ff">new</span> ServerSocket(9999);
		<span style="color: #0000ff">while</span>(<span style="color: #0000ff">true</span>){
			System.out.println("<span style="color: #8b0000">----------服务端已经启动------------</span>");
			Socket s = ss.accept();
<span style="color: #008000">//			System.out.println(s.getLocalPort()+"  "+s.getPort()+"  "+s.getLocalAddress().getHostAddress());</span>
<span style="color: #008000">//			System.out.println(s.getInetAddress().getHostAddress()+":"+s.getPort()+</span>
<span style="color: #008000">//					"客户端已经 连接上服务器ServerSocket");</span>
			DataOutputStream dos = <span style="color: #0000ff">new</span> DataOutputStream(s.getOutputStream());
			System.out.println("<span style="color: #8b0000">客户端【</span>"+s.getInetAddress().getHostAddress()+"<span style="color: #8b0000">::</span>"+s.getPort()+"<span style="color: #8b0000">】已经连接</span>");
			dos.writeUTF("<span style="color: #8b0000">服务器端写入客户端的数据：客户端【</span>"+s.getInetAddress().getHostAddress()+"<span style="color: #8b0000">::</span>"+s.getPort()+
					"<span style="color: #8b0000">】已经连接上服务器端【</span>"+s.getLocalAddress().getHostAddress()+"<span style="color: #8b0000">::</span>"+s.getLocalPort()+"<span style="color: #8b0000">】！</span>");
			dos.flush();
			dos.close();
			s.close();
		}
	}

}</pre></div><br></span>
<p></p>
<p>运行结果：</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/443ee12195b7_14F89/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/443ee12195b7_14F89/image_thumb.png" width="681" height="133"></a> </p>
<p>上客户端程序：
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_216370" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_216370').style.display='none'; document.getElementById('Code_Open_Image_216370').style.display='inline'; document.getElementById('Code_Open_Text_216370').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_216370" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_216370').style.display='none'; getElementById('Code_Closed_Image_216370').style.display='inline'; getElementById('Code_Closed_Text_216370').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_216370" class="cnblogs_code_Collapse">TestTCPClient</span><span style="display: none" id="Code_Open_Text_216370">
<span style="color: #0000ff">package</span> socketdemo;

<span style="color: #0000ff">import</span> java.io.DataInputStream;
<span style="color: #0000ff">import</span> java.io.IOException;
<span style="color: #0000ff">import</span> java.net.Socket;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> TestTCPClient {
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args)<span style="color: #0000ff">throws</span> IOException {
		<span style="color: #0000ff">for</span>(<span style="color: #0000ff">int</span> i =0;i&lt;5;i++){
			Socket s = <span style="color: #0000ff">new</span> Socket("<span style="color: #8b0000">192.168.0.2</span>",9999);
<span style="color: #008000">//			------------------------------------------</span>
			DataInputStream dis = <span style="color: #0000ff">new</span> DataInputStream(s.getInputStream());
			System.out.println("<span style="color: #8b0000">接收：</span>"+dis.readUTF());
			dis.close();
<span style="color: #008000">//			------------------------------------------</span>
			s.close();
		}
	}
}</pre></div><br></span>
<p></p>
<p>运行结果：</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/443ee12195b7_14F89/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/443ee12195b7_14F89/image_thumb_1.png" width="683" height="129"></a> </p>
<p>（客户端）</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/443ee12195b7_14F89/image_6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/443ee12195b7_14F89/image_thumb_2.png" width="619" height="209"></a> </p>
<p>（服务器端）</p>  <img src ="http://www.blogjava.net/min-water/aggbug/337958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/min-water/" target="_blank">Mineralwasser</a> 2010-11-12 23:57 <a href="http://www.blogjava.net/min-water/articles/337958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初学网络编程的两个小程序（一）----UDP/IP</title><link>http://www.blogjava.net/min-water/articles/337956.html</link><dc:creator>Mineralwasser</dc:creator><author>Mineralwasser</author><pubDate>Fri, 12 Nov 2010 15:49:00 GMT</pubDate><guid>http://www.blogjava.net/min-water/articles/337956.html</guid><wfw:comment>http://www.blogjava.net/min-water/comments/337956.html</wfw:comment><comments>http://www.blogjava.net/min-water/articles/337956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/min-water/comments/commentRss/337956.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/min-water/services/trackbacks/337956.html</trackback:ping><description><![CDATA[<p>经过一个多月枯燥的Java编程基础学习，终于学到net了，呵呵.. .. ..挺好玩</p> <p>上服务器端程序：</p> <div class="cnblogs_code"><pre><img id="Code_Closed_Image_403745" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_403745').style.display='none'; document.getElementById('Code_Open_Image_403745').style.display='inline'; document.getElementById('Code_Open_Text_403745').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_403745" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_403745').style.display='none'; getElementById('Code_Closed_Image_403745').style.display='inline'; getElementById('Code_Closed_Text_403745').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_403745" class="cnblogs_code_Collapse">ServerSocket01</span><span style="display: none" id="Code_Open_Text_403745">
<span style="color: #0000ff">package</span> socket;

<span style="color: #0000ff">import</span> java.io.PrintStream;
<span style="color: #0000ff">import</span> java.net.ServerSocket;
<span style="color: #0000ff">import</span> java.net.Socket;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> ServerSocket01 {
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args) {
		ServerSocket server = <span style="color: #0000ff">null</span>;
		<span style="color: #0000ff">try</span>{
<span style="color: #008000">//			服务器在9999端口开辟了服务</span>
			server = <span style="color: #0000ff">new</span> ServerSocket(9999);
		}<span style="color: #0000ff">catch</span>(Exception e){}
<span style="color: #008000">//		对于服务器而言，所有用户的请求都是通过ServerSocket实现</span>
		Socket client = <span style="color: #0000ff">null</span>;
		<span style="color: #0000ff">try</span>{
<span style="color: #008000">//			服务器在此等待用户的链接</span>
			System.out.println("<span style="color: #8b0000">等待客户端连接...</span>");
			client = server.accept();<span style="color: #008000">//服务端受到的一个client</span>
		}<span style="color: #0000ff">catch</span>(Exception e){}
<span style="color: #008000">//		要向客户端打印信息</span>
		PrintStream out = <span style="color: #0000ff">null</span>;
<span style="color: #008000">//		得到向客户端输出信息的能力</span>
		<span style="color: #0000ff">try</span>{
			out = <span style="color: #0000ff">new</span> PrintStream(client.getOutputStream());
		}<span style="color: #0000ff">catch</span>(Exception e){}
		out.println("<span style="color: #8b0000">How are you ?</span>");
		<span style="color: #0000ff">try</span>{
			client.close();
			server.close();
		}<span style="color: #0000ff">catch</span>(Exception e){}
		System.out.println("<span style="color: #8b0000">客户端回应完毕...</span>");

	}

}
</pre></div><p>运行结果：</p><p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/b94c1e17eb5c_14B77/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/b94c1e17eb5c_14B77/image_thumb.png" width="448" height="109"></a> <br></p></span>
<p></p>
<p>上客户端程序：</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_580047" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_580047').style.display='none'; document.getElementById('Code_Open_Image_580047').style.display='inline'; document.getElementById('Code_Open_Text_580047').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_580047" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_580047').style.display='none'; getElementById('Code_Closed_Image_580047').style.display='inline'; getElementById('Code_Closed_Text_580047').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_580047" class="cnblogs_code_Collapse">ClientSocket01</span><span style="display: none" id="Code_Open_Text_580047">
<span style="color: #0000ff">package</span> socket;

<span style="color: #0000ff">import</span> java.io.BufferedReader;
<span style="color: #0000ff">import</span> java.io.InputStreamReader;
<span style="color: #0000ff">import</span> java.net.Socket;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> ClientSocket01 {
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args) {
		Socket client=<span style="color: #0000ff">null</span>;
		<span style="color: #0000ff">try</span> {
<span style="color: #008000">//			实际上表示要链接到服务器上去了</span>
			client=<span style="color: #0000ff">new</span> Socket("<span style="color: #8b0000">192.168.0.2</span>",9999);
			<span style="color: #008000">//192.168.0.2是本人的局域网IP地址</span>
		} <span style="color: #0000ff">catch</span> (Exception e) {} 
<span style="color: #008000">//		等待服务器的回应</span>
		String str = <span style="color: #0000ff">null</span>;
<span style="color: #008000">//		如果直接使用InputStream接收会比较麻烦</span>
		BufferedReader buf = <span style="color: #0000ff">null</span>;
		<span style="color: #0000ff">try</span>{
			buf = <span style="color: #0000ff">new</span> BufferedReader(<span style="color: #0000ff">new</span> InputStreamReader(client.getInputStream()));
			str = buf.readLine();
		}<span style="color: #0000ff">catch</span>(Exception e){}
		System.out.println(str);
	}

}
</pre></div><br></span>
<p></p>
<p>运行结果：</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/b94c1e17eb5c_14B77/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/b94c1e17eb5c_14B77/image_thumb_1.png" width="514" height="98"></a> （客户端）</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/b94c1e17eb5c_14B77/image_6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/b94c1e17eb5c_14B77/image_thumb_2.png" width="512" height="112"></a> （服务器端）</p>  <img src ="http://www.blogjava.net/min-water/aggbug/337956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/min-water/" target="_blank">Mineralwasser</a> 2010-11-12 23:49 <a href="http://www.blogjava.net/min-water/articles/337956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生产者-消费者（producer-consumer）问题</title><link>http://www.blogjava.net/min-water/articles/337955.html</link><dc:creator>Mineralwasser</dc:creator><author>Mineralwasser</author><pubDate>Fri, 12 Nov 2010 15:30:00 GMT</pubDate><guid>http://www.blogjava.net/min-water/articles/337955.html</guid><wfw:comment>http://www.blogjava.net/min-water/comments/337955.html</wfw:comment><comments>http://www.blogjava.net/min-water/articles/337955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/min-water/comments/commentRss/337955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/min-water/services/trackbacks/337955.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 生产者-消费者（producer-consumer）问题，两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者，用于将消息放入缓冲区；另外一个是消费者，用于从缓冲区中取出消息。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样应该是生产者生产一个产品，然后消费者取走一个产品，然后再生产、再消费，这个看似很理所当然的逻辑在现实中是必然的，但是在程序里却出现了问题。a：生产者生产了很多消费者却没有取，b：生产这还没有生产完一个完整的产品消费者却已经取走了好几次了，这样取走的产品当然是不合格的。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面就用生产和消费鞋子为例，看看程序是怎么运行的吧.. .. ..</p> <div class="cnblogs_code"><pre><img id="Code_Closed_Image_663034" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_663034').style.display='none'; document.getElementById('Code_Open_Image_663034').style.display='inline'; document.getElementById('Code_Open_Text_663034').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_663034" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_663034').style.display='none'; getElementById('Code_Closed_Image_663034').style.display='inline'; getElementById('Code_Closed_Text_663034').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_663034" class="cnblogs_code_Collapse">Demo01</span><span style="display: none" id="Code_Open_Text_663034">
<span style="color: #0000ff">package</span> demo;
<span style="color: #0000ff">class</span> Shoes{
<span style="color: #008000">//	鞋子类，两个属性：使用者（男/女），大小（大/小）</span>
	String user=<span style="color: #0000ff">null</span>;
	String size=<span style="color: #0000ff">null</span>;
}
<span style="color: #0000ff">class</span> Pro <span style="color: #0000ff">implements</span> Runnable{
<span style="color: #008000">//	生产者，生产</span>
	Shoes shoe = <span style="color: #0000ff">null</span>;
	<span style="color: #0000ff">public</span> Pro(Shoes s){
		<span style="color: #0000ff">this</span>.shoe=s;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> run(){
		<span style="color: #0000ff">int</span> i=0;
		<span style="color: #0000ff">while</span>(<span style="color: #0000ff">true</span>){
			<span style="color: #0000ff">if</span>(i==0){
<span style="color: #008000">//				男人穿的鞋子是大号的</span>
				shoe.user="<span style="color: #8b0000">男式</span>";
				shoe.size="<span style="color: #8b0000">大号</span>";
				i=1;
			}<span style="color: #0000ff">else</span>{
<span style="color: #008000">//				女人穿的鞋子是小号的</span>
				shoe.user="<span style="color: #8b0000">女式</span>";
				shoe.size="<span style="color: #8b0000">小号</span>";
				i=0;
			}
		}
	}
}
<span style="color: #0000ff">class</span> Cus <span style="color: #0000ff">implements</span> Runnable{
	Shoes shoe=<span style="color: #0000ff">null</span>;
	<span style="color: #0000ff">public</span> Cus(Shoes s){
		<span style="color: #0000ff">this</span>.shoe=s;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> run(){
		<span style="color: #0000ff">while</span>(<span style="color: #0000ff">true</span>){
			System.out.println(shoe.user+"<span style="color: #8b0000">--&gt;</span>"+shoe.size);
		}
	}
}
<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> Demo01 {

	<span style="color: #008000">/**生产者-消费者问题  producer-consumer
	 * @param args
	 */</span>
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args) {
<span style="color: #008000">//		设置鞋子的一个生产者和一个消费者，并启动两个线程，分别进行生产和消费</span>
		Shoes shoe = <span style="color: #0000ff">new</span> Shoes();
		Pro p = <span style="color: #0000ff">new</span> Pro(shoe);
		Cus c = <span style="color: #0000ff">new</span> Cus(shoe);
		<span style="color: #0000ff">new</span> Thread(p).start();
		<span style="color: #0000ff">new</span> Thread(c).start();
	}

}
</pre></div><br></span>
<p>结果：</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/Java_12BB8/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/Java_12BB8/image_thumb.png" width="143" height="244"></a> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从结果中可以看到，第一次取时已经生产完一双男鞋，女鞋还没有生产完就取走了女鞋，第二次到第四次消费都是男鞋，看来是要么生产的太多了，没有取走，要么就是取的太快，只生产了一双男鞋却取了四次。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样的程序显然是不符合实际的，所以就要加以改进。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应该是生产时，生产者进入车间并把车间的门上锁，生产一双后生产者出来，消费者进入到车间并把车间门上锁，取到鞋子后出来，这样车间里只有一个人，要么生产者要么消费者，这样就可以保证生产合格的产品。</p>
<p>改进的程序：</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_573156" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_573156').style.display='none'; document.getElementById('Code_Open_Image_573156').style.display='inline'; document.getElementById('Code_Open_Text_573156').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_573156" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_573156').style.display='none'; getElementById('Code_Closed_Image_573156').style.display='inline'; getElementById('Code_Closed_Text_573156').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_573156" class="cnblogs_code_Collapse">Demo02</span><span style="display: none" id="Code_Open_Text_573156">
<span style="color: #0000ff">package</span> demo2;

<span style="color: #0000ff">class</span> Shoes{
<span style="color: #008000">//	鞋子类，两个属性：使用者（男/女），大小（大/小）</span>
	String user=<span style="color: #0000ff">null</span>;
	String size=<span style="color: #0000ff">null</span>;
	<span style="color: #0000ff">private</span> <span style="color: #0000ff">boolean</span> flag = <span style="color: #0000ff">true</span>;
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">synchronized</span> <span style="color: #0000ff">void</span> set(String user,String size){    
        <span style="color: #008000">//如果flag的值不是true则要等待    </span>
        <span style="color: #0000ff">if</span> (!flag){    
                <span style="color: #008000">//等待    </span>
                <span style="color: #0000ff">try</span>{    
                        wait();    
                }<span style="color: #0000ff">catch</span>(Exception e){}    
        }    
        <span style="color: #0000ff">try</span>{    
                Thread.sleep(100);    
        }<span style="color: #0000ff">catch</span> (Exception e){}    
        <span style="color: #008000">// 如果向下继续执行了，则表示可以设置,flag = true    </span>
        <span style="color: #0000ff">this</span>.user = user;    
        <span style="color: #0000ff">this</span>.size = size;    
        <span style="color: #008000">// 修改设置的标志    </span>
        flag = <span style="color: #0000ff">false</span>;    
        <span style="color: #008000">//唤醒其他线程    </span>
        notify();    
}    
<span style="color: #008000">//设置一个输出方法    </span>
<span style="color: #0000ff">public</span> <span style="color: #0000ff">synchronized</span> <span style="color: #0000ff">void</span> get(){    
    <span style="color: #008000">// 如果flag的值为true的时候，表示要等待    </span>
    <span style="color: #0000ff">if</span>(flag){    
            <span style="color: #0000ff">try</span>{    
                    wait();    
            }<span style="color: #0000ff">catch</span>(Exception e){}    
    }    
    <span style="color: #0000ff">try</span>{    
            Thread.sleep(100);    
    }<span style="color: #0000ff">catch</span> (Exception e){}    
    <span style="color: #008000">//如果向下执行了，则表示允许取出    </span>
    System.out.println(<span style="color: #0000ff">this</span>.user+"<span style="color: #8b0000"> --&gt; </span>"+<span style="color: #0000ff">this</span>.size);    
    <span style="color: #008000">//改变标志，表示可以生产了    </span>
    flag = <span style="color: #0000ff">true</span>;    
    notify();    
}
}
<span style="color: #0000ff">class</span> Pro <span style="color: #0000ff">implements</span> Runnable{
<span style="color: #008000">//	生产者，生产</span>
	Shoes shoe = <span style="color: #0000ff">null</span>;
	<span style="color: #0000ff">public</span> Pro(Shoes s){
		<span style="color: #0000ff">this</span>.shoe=s;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> run(){
		<span style="color: #0000ff">int</span> i=0;
		<span style="color: #0000ff">while</span>(<span style="color: #0000ff">true</span>){
			<span style="color: #0000ff">if</span>(i==0){
<span style="color: #008000">//				男人穿的鞋子是大号的</span>
				shoe.set("<span style="color: #8b0000">男式</span>", "<span style="color: #8b0000">大号</span>");
				i=1;
			}<span style="color: #0000ff">else</span>{
<span style="color: #008000">//				女人穿的鞋子是小号的</span>
				shoe.set("<span style="color: #8b0000">女式</span>", "<span style="color: #8b0000">小号</span>");
				i=0;
			}
		}
	}
}
<span style="color: #0000ff">class</span> Cus <span style="color: #0000ff">implements</span> Runnable{
	Shoes shoe=<span style="color: #0000ff">null</span>;
	 <span style="color: #0000ff">public</span> Cus(Shoes s){    
         <span style="color: #0000ff">this</span>.shoe = s;    
 }    
 <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> run(){    
         <span style="color: #0000ff">while</span>(<span style="color: #0000ff">true</span>){    
                 shoe.get();    
         }    
 }   
}
<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> Demo02 {

	<span style="color: #008000">/**生产者-消费者问题  producer-consumer
	 * @param args
	 */</span>
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args) {
<span style="color: #008000">//		设置鞋子的一个生产者和一个消费者，并启动两个线程，分别进行生产和消费</span>
		Shoes shoe = <span style="color: #0000ff">new</span> Shoes();
		Pro p = <span style="color: #0000ff">new</span> Pro(shoe);
		Cus c = <span style="color: #0000ff">new</span> Cus(shoe);
		<span style="color: #0000ff">new</span> Thread(p).start();
		<span style="color: #0000ff">new</span> Thread(c).start();
	}

}
</pre></div><br></span>
<p></p>
<p>运行结果：</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/Java_12BB8/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/Java_12BB8/image_thumb_1.png" width="148" height="244"></a></p> <img src ="http://www.blogjava.net/min-water/aggbug/337955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/min-water/" target="_blank">Mineralwasser</a> 2010-11-12 23:30 <a href="http://www.blogjava.net/min-water/articles/337955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多线程及实现多线程的方法</title><link>http://www.blogjava.net/min-water/articles/337543.html</link><dc:creator>Mineralwasser</dc:creator><author>Mineralwasser</author><pubDate>Mon, 08 Nov 2010 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/min-water/articles/337543.html</guid><wfw:comment>http://www.blogjava.net/min-water/comments/337543.html</wfw:comment><comments>http://www.blogjava.net/min-water/articles/337543.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/min-water/comments/commentRss/337543.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/min-water/services/trackbacks/337543.html</trackback:ping><description><![CDATA[<p>多线程：减轻编写交互频繁、涉及面多的程序的难度；充分利用计算机资源。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个操作系统，可以有多个进程，每个进程上边会有多个线程。一个程序的运行至少启动两个线程：main线程和gc（守护）线程。</p>
<p>线程分为前台线程和后台线程（守护线程）：</p>
<p>对Java程序来说，只要有一个前台线程在运行，这个进程就不会结束；</p>
<p>如果一个进程只有后台线程在运行，这个进程就会结束；</p>
<p>如果某个线程对象在启动（调用start()方法）之前调用setDaemon(true);方法，这个线程就变成了后台线程。</p>
<p>线程的状态转换：</p>
<a href="file:///C:/Users/PangFang/AppData/Local/Temp/WindowsLiveWriter-429641856/supfiles166B532/image9.png"><img style="border-right-width: 0px; width: 390px; display: inline; border-top-width: 0px; border-bottom-width: 0px; height: 197px; border-left-width: 0px" title="image" border="0" alt="image" src="file:///C:/Users/PangFang/AppData/Local/Temp/WindowsLiveWriter-429641856/supfiles166B532/image_thumb3.png" width="390" height="197" /></a>&nbsp;<br />
<p>&nbsp;&nbsp;&nbsp; * 多线程的方法有两种：</p>
<p>1、继承Thread类，并重写run()方法；</p>
<p>2、实现Runnable接口。</p>
<p>虽然有两种不同的方法，但是它们的多线程启动方法是相同的，都是同归Thread类来启动多线程的[p.start();]。</p>
<p>start使盖县程开始执行是指Java虚拟机调用该线程的run()方法；</p>
<p>start只是使线程就绪，什么时候开始执行由CPU决定。</p>
<p>线程只能启动一次；如果启动多次，程序在编译时不会出现错误，但是执行时会出现错误。</p>
<p>两种方法的不同在于：</p>
<p>方法1的缺点：Java为单继承，当一个想实现多线程的类继承了Thread类后就不可以再继承其他类，这样就不灵活，没有扩展性了；</p>
<p>方法2的优点：实现Runnable接口不仅可以再继承其他类，还可以实现资源共享。</p>
<p>总之实现Runnable接口比继承Thread类要更好一些，所以尽量要使用Runnable而不用Thread。</p>
<p>下面就这两种方法举例说明：</p>
<p>方法1，继承Thread类，重写run()方法。</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_31_339_Open_Image" onclick="this.style.display='none'; Codehighlighter1_31_339_Open_Text.style.display='none'; Codehighlighter1_31_339_Closed_Image.style.display='inline'; Codehighlighter1_31_339_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_31_339_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_31_339_Closed_Text.style.display='none'; Codehighlighter1_31_339_Open_Image.style.display='inline'; Codehighlighter1_31_339_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MyThread11&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;Thread</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_31_339_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_31_339_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;time;<br />
<img id="Codehighlighter1_93_129_Open_Image" onclick="this.style.display='none'; Codehighlighter1_93_129_Open_Text.style.display='none'; Codehighlighter1_93_129_Closed_Image.style.display='inline'; Codehighlighter1_93_129_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_93_129_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_93_129_Closed_Text.style.display='none'; Codehighlighter1_93_129_Open_Image.style.display='inline'; Codehighlighter1_93_129_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;MyThread11&nbsp;(String&nbsp;name,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;time)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_93_129_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_93_129_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">(name);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.time</span><span style="color: #000000">=</span><span style="color: #000000">time;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_149_337_Open_Image" onclick="this.style.display='none'; Codehighlighter1_149_337_Open_Text.style.display='none'; Codehighlighter1_149_337_Closed_Image.style.display='inline'; Codehighlighter1_149_337_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_149_337_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_149_337_Closed_Text.style.display='none'; Codehighlighter1_149_337_Open_Image.style.display='inline'; Codehighlighter1_149_337_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;run()</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_149_337_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_149_337_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_157_189_Open_Image" onclick="this.style.display='none'; Codehighlighter1_157_189_Open_Text.style.display='none'; Codehighlighter1_157_189_Closed_Image.style.display='inline'; Codehighlighter1_157_189_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_157_189_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_157_189_Closed_Text.style.display='none'; Codehighlighter1_157_189_Open_Image.style.display='inline'; Codehighlighter1_157_189_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_157_189_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_157_189_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(</span><span style="color: #0000ff">this</span><span style="color: #000000">.time);<br />
<img id="Codehighlighter1_222_250_Open_Image" onclick="this.style.display='none'; Codehighlighter1_222_250_Open_Text.style.display='none'; Codehighlighter1_222_250_Closed_Image.style.display='inline'; Codehighlighter1_222_250_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_222_250_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_222_250_Closed_Text.style.display='none'; Codehighlighter1_222_250_Open_Image.style.display='inline'; Codehighlighter1_222_250_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(InterruptedException&nbsp;e)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_222_250_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_222_250_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Thread.currentThread().getName()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">--&gt;运行，延迟&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #0000ff">this</span><span style="color: #000000">.time</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">毫秒。</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_363_599_Open_Image" onclick="this.style.display='none'; Codehighlighter1_363_599_Open_Text.style.display='none'; Codehighlighter1_363_599_Closed_Image.style.display='inline'; Codehighlighter1_363_599_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_363_599_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_363_599_Closed_Text.style.display='none'; Codehighlighter1_363_599_Open_Image.style.display='inline'; Codehighlighter1_363_599_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MyDemo01&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_363_599_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_363_599_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_405_597_Open_Image" onclick="this.style.display='none'; Codehighlighter1_405_597_Open_Text.style.display='none'; Codehighlighter1_405_597_Closed_Image.style.display='inline'; Codehighlighter1_405_597_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_405_597_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_405_597_Closed_Text.style.display='none'; Codehighlighter1_405_597_Open_Image.style.display='inline'; Codehighlighter1_405_597_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_405_597_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_405_597_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyThread11&nbsp;mt1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MyThread11(</span><span style="color: #000000">"</span><span style="color: #000000">T--A</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">1000</span><span style="color: #000000">);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyThread11&nbsp;mt2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MyThread11(</span><span style="color: #000000">"</span><span style="color: #000000">T--B</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">2000</span><span style="color: #000000">);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyThread11&nbsp;mt3&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MyThread11(</span><span style="color: #000000">"</span><span style="color: #000000">T--C</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">3000</span><span style="color: #000000">);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mt1.start();<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mt2.start();<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mt3.start();<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
程序运行结果：（每隔一秒打印一行，打印完后程序结束）<br />
<a href="file:///C:/Users/PangFang/AppData/Local/Temp/WindowsLiveWriter-429641856/supfiles166B532/image16.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="file:///C:/Users/PangFang/AppData/Local/Temp/WindowsLiveWriter-429641856/supfiles166B532/image_thumb10.png" width="244" height="112" /></a>&nbsp;<br />
<br />
方法2，实现Runnable接口。<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_36_348_Open_Image" onclick="this.style.display='none'; Codehighlighter1_36_348_Open_Text.style.display='none'; Codehighlighter1_36_348_Closed_Image.style.display='inline'; Codehighlighter1_36_348_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_36_348_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_36_348_Closed_Text.style.display='none'; Codehighlighter1_36_348_Open_Image.style.display='inline'; Codehighlighter1_36_348_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MyThread22&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Runnable</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_36_348_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_36_348_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;time;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name;<br />
<img id="Codehighlighter1_120_159_Open_Image" onclick="this.style.display='none'; Codehighlighter1_120_159_Open_Text.style.display='none'; Codehighlighter1_120_159_Closed_Image.style.display='inline'; Codehighlighter1_120_159_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_120_159_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_120_159_Closed_Text.style.display='none'; Codehighlighter1_120_159_Open_Image.style.display='inline'; Codehighlighter1_120_159_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;MyThread22&nbsp;(String&nbsp;name,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;time)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_120_159_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_120_159_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name</span><span style="color: #000000">=</span><span style="color: #000000">name;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.time</span><span style="color: #000000">=</span><span style="color: #000000">time;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_180_345_Open_Image" onclick="this.style.display='none'; Codehighlighter1_180_345_Open_Text.style.display='none'; Codehighlighter1_180_345_Closed_Image.style.display='inline'; Codehighlighter1_180_345_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_180_345_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_180_345_Closed_Text.style.display='none'; Codehighlighter1_180_345_Open_Image.style.display='inline'; Codehighlighter1_180_345_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;run()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_180_345_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_180_345_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_188_220_Open_Image" onclick="this.style.display='none'; Codehighlighter1_188_220_Open_Text.style.display='none'; Codehighlighter1_188_220_Closed_Image.style.display='inline'; Codehighlighter1_188_220_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_188_220_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_188_220_Closed_Text.style.display='none'; Codehighlighter1_188_220_Open_Image.style.display='inline'; Codehighlighter1_188_220_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_188_220_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_188_220_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(</span><span style="color: #0000ff">this</span><span style="color: #000000">.time);<br />
<img id="Codehighlighter1_253_281_Open_Image" onclick="this.style.display='none'; Codehighlighter1_253_281_Open_Text.style.display='none'; Codehighlighter1_253_281_Closed_Image.style.display='inline'; Codehighlighter1_253_281_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_253_281_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_253_281_Closed_Text.style.display='none'; Codehighlighter1_253_281_Open_Image.style.display='inline'; Codehighlighter1_253_281_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(InterruptedException&nbsp;e)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_253_281_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_253_281_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff">this</span><span style="color: #000000">.name</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">--&gt;运行，延迟&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #0000ff">this</span><span style="color: #000000">.time</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">毫秒。</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_372_644_Open_Image" onclick="this.style.display='none'; Codehighlighter1_372_644_Open_Text.style.display='none'; Codehighlighter1_372_644_Closed_Image.style.display='inline'; Codehighlighter1_372_644_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_372_644_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_372_644_Closed_Text.style.display='none'; Codehighlighter1_372_644_Open_Image.style.display='inline'; Codehighlighter1_372_644_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MyDemo02&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_372_644_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_372_644_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_414_642_Open_Image" onclick="this.style.display='none'; Codehighlighter1_414_642_Open_Text.style.display='none'; Codehighlighter1_414_642_Closed_Image.style.display='inline'; Codehighlighter1_414_642_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none" id="Codehighlighter1_414_642_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_414_642_Closed_Text.style.display='none'; Codehighlighter1_414_642_Open_Image.style.display='inline'; Codehighlighter1_414_642_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_414_642_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_414_642_Open_Text"><span style="color: #000000">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyThread22&nbsp;mt1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MyThread22(</span><span style="color: #000000">"</span><span style="color: #000000">T--A</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">1000</span><span style="color: #000000">);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyThread22&nbsp;mt2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MyThread22(</span><span style="color: #000000">"</span><span style="color: #000000">T--B</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">2000</span><span style="color: #000000">);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyThread22&nbsp;mt3&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MyThread22(</span><span style="color: #000000">"</span><span style="color: #000000">T--C</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">3000</span><span style="color: #000000">);<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Thread(mt1).start();<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Thread(mt2).start();<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Thread(mt3).start();<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
<br />
程序运行结果：
<p>（每隔一秒打印一行，打印完后程序结束）</p>
<a href="file:///C:/Users/PangFang/AppData/Local/Temp/WindowsLiveWriter-429641856/supfiles166B532/image5.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="file:///C:/Users/PangFang/AppData/Local/Temp/WindowsLiveWriter-429641856/supfiles166B532/image_thumb1.png" width="244" height="123" /></a>&nbsp;
 <img src ="http://www.blogjava.net/min-water/aggbug/337543.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/min-water/" target="_blank">Mineralwasser</a> 2010-11-08 16:33 <a href="http://www.blogjava.net/min-water/articles/337543.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>阶段总结</title><link>http://www.blogjava.net/min-water/articles/337427.html</link><dc:creator>Mineralwasser</dc:creator><author>Mineralwasser</author><pubDate>Sat, 06 Nov 2010 14:12:00 GMT</pubDate><guid>http://www.blogjava.net/min-water/articles/337427.html</guid><wfw:comment>http://www.blogjava.net/min-water/comments/337427.html</wfw:comment><comments>http://www.blogjava.net/min-water/articles/337427.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/min-water/comments/commentRss/337427.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/min-water/services/trackbacks/337427.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 经过一段时间的JAVA实训学习，由以前的一窍不通，变成了今天的菜鸟，稍有成就感，o(∩_∩)o <br><br>下面就写一个小程序，把已经学过的知识都捎带着复习一下.. .. ..<br><br>先说程序的要求：小小的简单的学生信息管理系统。在控制台上显示四个选项，分别为增加、浏览、修改、退出系统；然后选择相应的功能进行操作<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/min-water/articles/337427.html'>阅读全文</a><img src ="http://www.blogjava.net/min-water/aggbug/337427.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/min-water/" target="_blank">Mineralwasser</a> 2010-11-06 22:12 <a href="http://www.blogjava.net/min-water/articles/337427.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA流技术（IO编程）</title><link>http://www.blogjava.net/min-water/articles/337371.html</link><dc:creator>Mineralwasser</dc:creator><author>Mineralwasser</author><pubDate>Fri, 05 Nov 2010 10:02:00 GMT</pubDate><guid>http://www.blogjava.net/min-water/articles/337371.html</guid><wfw:comment>http://www.blogjava.net/min-water/comments/337371.html</wfw:comment><comments>http://www.blogjava.net/min-water/articles/337371.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/min-water/comments/commentRss/337371.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/min-water/services/trackbacks/337371.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 流的作用：如何从能够发送字节序列的任何数据源取得输入，以及如何将输出发送到能够接收字节序列的任何目的地。即：输入/输出问题。<br>字节序列的源和目的地可以是文件、网络连接、内存块等，存储在文件中的信息和从网络连接中接收的信息，从本质上处理方法是相同的。<br>数据最终都保存为一个字节序列，但是在程序设计中应当用更高级的数据结构来处理，如字符或对象序列等。&nbsp;&nbsp;<a href='http://www.blogjava.net/min-water/articles/337371.html'>阅读全文</a><img src ="http://www.blogjava.net/min-water/aggbug/337371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/min-water/" target="_blank">Mineralwasser</a> 2010-11-05 18:02 <a href="http://www.blogjava.net/min-water/articles/337371.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>银行排队叫号系统</title><link>http://www.blogjava.net/min-water/articles/336710.html</link><dc:creator>Mineralwasser</dc:creator><author>Mineralwasser</author><pubDate>Mon, 01 Nov 2010 09:16:00 GMT</pubDate><guid>http://www.blogjava.net/min-water/articles/336710.html</guid><wfw:comment>http://www.blogjava.net/min-water/comments/336710.html</wfw:comment><comments>http://www.blogjava.net/min-water/articles/336710.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/min-water/comments/commentRss/336710.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/min-water/services/trackbacks/336710.html</trackback:ping><description><![CDATA[<p>现在银行遍地开花，在城市了差不多每隔200米就可以看到一家银行。在银行叫号排队也就成了很平常的事情。但是很让人生气的是在咱们这个世界上最大的社会主义国家里，在银行排队却很不公平，咱们这些没钱的人（在银行里存钱不多，持普通卡）每次排队都要等很长一段时间才能办理业务，而且没有工作人员来招呼，而那些有钱人（在银行里存了很多钱，持&#8220;金卡&#8221;）却不用等，随时可以办理业务，还美其名曰&#8220;金卡&#8221;特权。难道有钱就有特权吗？气愤中&#8230;&#8230;...</p> <p>还是说这个系统吧：</p> <p>银行大厅里有一个叫号机（顾客客户端），如果持普通卡点一下办理业务按钮就会打印一张小条，显示你的号码和排在你前面的人数；如果持金卡，点一下办理业务就会提示下一位要办理的客户就是你。</p> <p>每个业务办理窗口都有一个工作人员客户端，点击下一位就会从等待的客户队列中取出第一位到该窗口办理。</p> <p>客户，也就是等待的人，要有号码、排在前面的人数等属性，然后实现这些属性的set、get方法。</p> <p>Waiter</p> <div class="cnblogs_code"><pre><img id="Code_Closed_Image_753398" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_753398').style.display='none'; document.getElementById('Code_Open_Image_753398').style.display='inline'; document.getElementById('Code_Open_Text_753398').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_753398" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_753398').style.display='none'; getElementById('Code_Closed_Image_753398').style.display='inline'; getElementById('Code_Closed_Text_753398').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_753398" class="cnblogs_code_Collapse">Waiter</span><span style="display: none" id="Code_Open_Text_753398">
<span style="color: #0000ff">package</span> queuebanknew;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> Waiter {
	<span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span> num;
	<span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span> frontNum;
	<span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span> flag;
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> getFlag() {
		<span style="color: #0000ff">return</span> flag;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setFlag(<span style="color: #0000ff">int</span> flag) {
		<span style="color: #0000ff">this</span>.flag = flag;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> getNum() {
		<span style="color: #0000ff">return</span> num;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setNum(<span style="color: #0000ff">int</span> num) {
		<span style="color: #0000ff">this</span>.num = num;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> getFrontNum() {
		<span style="color: #0000ff">return</span> frontNum;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setFrontNum(<span style="color: #0000ff">int</span> frontNum) {
		<span style="color: #0000ff">this</span>.frontNum = frontNum;
	}
	

}
</pre></div><br></span>
<p></p>
<p>工作人员，也就是窗口的处理业务的人员，她们有自己的编号，姓名，顾客，实现这些属性的set、get方法，还加入了一段工作过程的代码。</p>
<p>Counter</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_284700" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_284700').style.display='none'; document.getElementById('Code_Open_Image_284700').style.display='inline'; document.getElementById('Code_Open_Text_284700').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_284700" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_284700').style.display='none'; getElementById('Code_Closed_Image_284700').style.display='inline'; getElementById('Code_Closed_Text_284700').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_284700" class="cnblogs_code_Collapse">Counter</span><span style="display: none" id="Code_Open_Text_284700">
<span style="color: #0000ff">package</span> queuebanknew;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> Counter {
	<span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span> id;
	<span style="color: #0000ff">private</span> String name;
	<span style="color: #0000ff">private</span> Waiter w;
	<span style="color: #0000ff">public</span> Counter(Waiter waiter) {
		<span style="color: #0000ff">this</span>.w=waiter;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> getId() {
		<span style="color: #0000ff">return</span> id;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setId(<span style="color: #0000ff">int</span> id) {
		<span style="color: #0000ff">this</span>.id = id;
	}
	<span style="color: #0000ff">public</span> String getName() {
		<span style="color: #0000ff">return</span> name;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setName(String name) {
		<span style="color: #0000ff">this</span>.name = name;
	}
	<span style="color: #0000ff">public</span> Waiter getW() {
		<span style="color: #0000ff">return</span> w;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setW(Waiter w) {
		<span style="color: #0000ff">this</span>.w = w;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> handBussines(){
		System.out.println("<span style="color: #8b0000">正在处理：</span>"+<span style="color: #0000ff">this</span>.w.getNum()+"<span style="color: #8b0000">号</span>");
		<span style="color: #0000ff">try</span> {
			Thread.sleep(1000);
		} <span style="color: #0000ff">catch</span> (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("<span style="color: #8b0000">处理完毕：</span>"+<span style="color: #0000ff">this</span>.getW().getNum());
	}

}
</pre></div><br></span>
<p>&nbsp;</p>
<p>测试一下：</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_554721" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_554721').style.display='none'; document.getElementById('Code_Open_Image_554721').style.display='inline'; document.getElementById('Code_Open_Text_554721').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_554721" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_554721').style.display='none'; getElementById('Code_Closed_Image_554721').style.display='inline'; getElementById('Code_Closed_Text_554721').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_554721" class="cnblogs_code_Collapse">TestBankQueue</span><span style="display: none" id="Code_Open_Text_554721">
<span style="color: #0000ff">package</span> queuebanknew;

<span style="color: #0000ff">import</span> java.util.Queue;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> TestBankQueue {

	<span style="color: #008000">/**
	 * @param args
	 */</span>
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args) {
		
		
		QueueServer qs = <span style="color: #0000ff">new</span> QueueServer();
		Queue&lt;Waiter&gt; waiterList = qs.init();<span style="color: #008000">//初始化10个等待者</span>
		Waiter waiter= <span style="color: #0000ff">null</span>;
		<span style="color: #0000ff">while</span>(<span style="color: #0000ff">true</span>){<span style="color: #008000">//模拟工作人员处理业务</span>
			waiter = waiterList.poll();
			<span style="color: #0000ff">if</span>(waiter != <span style="color: #0000ff">null</span>){
				Counter counter = <span style="color: #0000ff">new</span> Counter(waiter);
				counter.handBussines();
			}<span style="color: #0000ff">else</span>{
				<span style="color: #0000ff">break</span>;
			}
		}
	}
}
</pre></div><br></span>
<p></p>
<p>结果：</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/1fa8388026df_F2A2/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/1fa8388026df_F2A2/image_thumb.png" width="314" height="244"></a> </p>
<p>服务器端：</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_450535" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_450535').style.display='none'; document.getElementById('Code_Open_Image_450535').style.display='inline'; document.getElementById('Code_Open_Text_450535').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_450535" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_450535').style.display='none'; getElementById('Code_Closed_Image_450535').style.display='inline'; getElementById('Code_Closed_Text_450535').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_450535" class="cnblogs_code_Collapse">QueueServer</span><span style="display: none" id="Code_Open_Text_450535">
<span style="color: #0000ff">package</span> queuebanknew;

<span style="color: #0000ff">import</span> java.util.LinkedList;


<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> QueueServer {
	LinkedList&lt;Waiter&gt; waiterList = <span style="color: #0000ff">new</span> LinkedList&lt;Waiter&gt;();
	
	<span style="color: #0000ff">public</span> LinkedList&lt;Waiter&gt; init(){
		<span style="color: #0000ff">for</span>(<span style="color: #0000ff">int</span> i=1;i&lt;=10;i++){
			Waiter w = <span style="color: #0000ff">new</span> Waiter();
		    w.setNum(i);
		    w.setFrontNum(i-1);
		    waiterList.offer(w);
		}
		<span style="color: #0000ff">return</span> waiterList;
		
	}

}
</pre></div><br></span>
<p></p>
<p>BankWorkerUI</p>
<p>工作人员客户端：</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_992536" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_992536').style.display='none'; document.getElementById('Code_Open_Image_992536').style.display='inline'; document.getElementById('Code_Open_Text_992536').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_992536" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_992536').style.display='none'; getElementById('Code_Closed_Image_992536').style.display='inline'; getElementById('Code_Closed_Text_992536').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_992536" class="cnblogs_code_Collapse">BankWorkerUI</span><span style="display: none" id="Code_Open_Text_992536">
<span style="color: #0000ff">package</span> queuebanknew;

<span style="color: #0000ff">import</span> java.util.Queue;

<span style="color: #0000ff">import</span> org.eclipse.swt.SWT;
<span style="color: #0000ff">import</span> org.eclipse.swt.events.SelectionAdapter;
<span style="color: #0000ff">import</span> org.eclipse.swt.events.SelectionEvent;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Button;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Display;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Shell;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Text;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> BankWorkerUI {
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args) {
		<span style="color: #0000ff">final</span> Display display = Display.getDefault();
		<span style="color: #0000ff">final</span> Shell shell = <span style="color: #0000ff">new</span> Shell();
		shell.setSize(327, 253);
		shell.setText("<span style="color: #8b0000">银行排队---工作人员客户端</span>");
<span style="color: #008000">//		新插入的界面核心代码</span>
		QueueServer qs = <span style="color: #0000ff">new</span> QueueServer();
		<span style="color: #0000ff">final</span> Queue&lt;Waiter&gt; waiterList = qs.init();
		
		<span style="color: #0000ff">final</span> Text txt = <span style="color: #0000ff">new</span> Text(shell,SWT.MULTI);
		txt.setBounds(65,30,180,70);
<span style="color: #008000">//		事件代码里要访问button</span>
		<span style="color: #0000ff">final</span> Button button = <span style="color: #0000ff">new</span> Button(shell,SWT.Activate);
		button.addSelectionListener(<span style="color: #0000ff">new</span> SelectionAdapter(){
			<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> widgetSelected(SelectionEvent e){
				Waiter waiter = waiterList.poll();
				<span style="color: #0000ff">if</span>(waiter!=<span style="color: #0000ff">null</span>){
					txt.setText(waiter.getNum()+"<span style="color: #8b0000">号顾客到1号窗口办理</span>");
				}<span style="color: #0000ff">else</span>{
					txt.setText("<span style="color: #8b0000">没人办理业务</span>");
				}
			}
		});
		button.setBounds(90, 141, 100, 25);
		button.setText("<span style="color: #8b0000">下一个</span>");
		shell.layout();
		shell.open();
		<span style="color: #0000ff">while</span>(!shell.isDisposed()){
			<span style="color: #0000ff">if</span>(!display.readAndDispatch())
				display.sleep();
			
		}
	}

}</pre></div><br></span>
<p></p>
<p>WaiterQueueUI</p>
<p>客户的客户端：</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_223600" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_223600').style.display='none'; document.getElementById('Code_Open_Image_223600').style.display='inline'; document.getElementById('Code_Open_Text_223600').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_223600" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_223600').style.display='none'; getElementById('Code_Closed_Image_223600').style.display='inline'; getElementById('Code_Closed_Text_223600').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_223600" class="cnblogs_code_Collapse">WaiterQueueUI</span><span style="display: none" id="Code_Open_Text_223600">
<span style="color: #0000ff">package</span> queuebanknew;

<span style="color: #0000ff">import</span> java.util.LinkedList;

<span style="color: #0000ff">import</span> org.eclipse.swt.SWT;
<span style="color: #0000ff">import</span> org.eclipse.swt.events.SelectionAdapter;
<span style="color: #0000ff">import</span> org.eclipse.swt.events.SelectionEvent;
<span style="color: #0000ff">import</span> org.eclipse.swt.graphics.Font;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Button;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Display;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Shell;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Text;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> WaiterQueueUI {
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args){
		<span style="color: #0000ff">final</span> Display display = Display.getDefault();
		<span style="color: #0000ff">final</span> Shell shell = <span style="color: #0000ff">new</span> Shell();
		shell.setBounds(100, 100, 570, 380);
<span style="color: #008000">//		shell.setMaximized(true);</span>
		shell.setText("<span style="color: #8b0000">银行排队----顾客客户端</span>");
<span style="color: #008000">//		界面核心代码</span>
		QueueServer qs = <span style="color: #0000ff">new</span> QueueServer();
		<span style="color: #0000ff">final</span> LinkedList&lt;Waiter&gt; waiterList = qs.init();
		<span style="color: #0000ff">final</span> Text txt = <span style="color: #0000ff">new</span> Text(shell,SWT.MULTI);
		
		txt.setBounds(50,50,200,150);
<span style="color: #008000">//		事件代码里要访问button，所以要添加final</span>
		<span style="color: #0000ff">final</span> Button button = <span style="color: #0000ff">new</span> Button(shell,SWT.Activate);
		button.addSelectionListener(<span style="color: #0000ff">new</span> SelectionAdapter(){
			<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> widgetSelected(SelectionEvent e){
				Waiter waiter = <span style="color: #0000ff">new</span> Waiter();
				waiter.setNum(waiterList.size()+1);
				waiter.setFrontNum(waiterList.size());
				waiterList.offer(waiter);
				
				<span style="color: #0000ff">if</span>(waiterList.size()&lt;=20){
					txt.setText("<span style="color: #8b0000">您现在排在</span>"+waiter.getNum()+"<span style="color: #8b0000">位置上\n您前面有</span>"+waiter.getFrontNum()+"<span style="color: #8b0000">个人，请耐心等待！！</span>");
				}<span style="color: #0000ff">else</span>{
					txt.setText("<span style="color: #8b0000">您前面已经排20多人，请考虑！\n</span>"+"<span style="color: #8b0000">您现在排在</span>"+waiter.getNum()+"<span style="color: #8b0000">位置上，\n您前面有</span>"+waiter.getFrontNum()+"<span style="color: #8b0000">个人，请耐心等待！！</span>");
				}
			}
			
		});
		button.setBounds(75, 250, 150, 50); <span style="color: #008000">// 设置按钮位置</span>
		button.setFont(<span style="color: #0000ff">new</span> Font(display,"<span style="color: #8b0000">宋体</span>",12,SWT.BOLD));
		button.setText("<span style="color: #8b0000">个人业务</span>");<span style="color: #008000">// 设置按钮上的文字</span>
<span style="color: #008000">//		------------------------------------------------------------------------</span>
		<span style="color: #0000ff">final</span> Text goldTxt = <span style="color: #0000ff">new</span> Text(shell,SWT.NULL);
		goldTxt.setBounds(300,50,200,150);
<span style="color: #008000">//		事件代码里要访问button，所以要添加final</span>
		<span style="color: #0000ff">final</span> Button goldButton = <span style="color: #0000ff">new</span> Button(shell,SWT.Activate);
		goldButton.addSelectionListener(<span style="color: #0000ff">new</span> SelectionAdapter(){
			<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> widgetSelected(SelectionEvent e){
				Waiter w = <span style="color: #0000ff">new</span> Waiter();
				w.setFlag(1);
				waiterList.addFirst(w);
				
				goldTxt.setText("<span style="color: #8b0000">金卡用户，下一位就是您！</span>");
			}
			
		});
		goldButton.setBounds(325, 250, 150, 50); <span style="color: #008000">// 设置按钮位置</span>
		goldButton.setFont(<span style="color: #0000ff">new</span> Font(display,"<span style="color: #8b0000">宋体</span>",12,SWT.BOLD));
		goldButton.setText("<span style="color: #8b0000">金卡通道</span>");<span style="color: #008000">// 设置按钮上的文字</span>
		<span style="color: #008000">// ------------------END---------------------------------------------</span>
		shell.layout();
		shell.open();
		<span style="color: #0000ff">while</span> (!shell.isDisposed()) {
			<span style="color: #0000ff">if</span> (!display.readAndDispatch())
				display.sleep();
		}
	}
}</pre></div><br></span>
<p>看一下运行结果：</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/1fa8388026df_F2A2/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/1fa8388026df_F2A2/image_thumb_1.png" width="312" height="212"></a> </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/1fa8388026df_F2A2/image_6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/1fa8388026df_F2A2/image_thumb_2.png" width="244" height="192"></a></p> <img src ="http://www.blogjava.net/min-water/aggbug/336710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/min-water/" target="_blank">Mineralwasser</a> 2010-11-01 17:16 <a href="http://www.blogjava.net/min-water/articles/336710.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个简单的医院自助挂号系统</title><link>http://www.blogjava.net/min-water/articles/336700.html</link><dc:creator>Mineralwasser</dc:creator><author>Mineralwasser</author><pubDate>Mon, 01 Nov 2010 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/min-water/articles/336700.html</guid><wfw:comment>http://www.blogjava.net/min-water/comments/336700.html</wfw:comment><comments>http://www.blogjava.net/min-water/articles/336700.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/min-water/comments/commentRss/336700.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/min-water/services/trackbacks/336700.html</trackback:ping><description><![CDATA[<p>先说一下在医院挂号的情况：患者到医院后要先交钱挂号，然后在等候大厅等待叫号，叫到你，你才能去看病。怎么挂号呢？医院有好多坐诊的医生或者专家，挂号的时候患者可以选择让哪个医生或者专家为自己看病，选好以后，等着你选的医生或者专家叫你就好了。这个挂号系统怎么做的呢，我们就写一个JAVA程序模拟一下。</p> <p>首先，这个系统会有患者类Patient，医生类Doctor，还有服务器类Server，当然还有用户界面UI。</p> <p>Patient</p> <p>病人类，要有名字、号码，还要有挂号的医生的标记号，这些都要作为病人的属性，然后实现set、get方法。</p> <div class="cnblogs_code"><pre><img id="Code_Closed_Image_411895" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_411895').style.display='none'; document.getElementById('Code_Open_Image_411895').style.display='inline'; document.getElementById('Code_Open_Text_411895').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_411895" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_411895').style.display='none'; getElementById('Code_Closed_Image_411895').style.display='inline'; getElementById('Code_Closed_Text_411895').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_411895" class="cnblogs_code_Collapse">Patient</span><span style="display: none" id="Code_Open_Text_411895">
<span style="color: #0000ff">package</span> hospital;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> Patient {
	<span style="color: #0000ff">private</span> String name;
	<span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span> flag;
	<span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span> num;
	<span style="color: #0000ff">public</span> String getName() {
		<span style="color: #0000ff">return</span> name;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setName(String name) {
		<span style="color: #0000ff">this</span>.name = name;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> getFlag() {
		<span style="color: #0000ff">return</span> flag;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setFlag(<span style="color: #0000ff">int</span> flag) {
		<span style="color: #0000ff">this</span>.flag = flag;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setNum(<span style="color: #0000ff">int</span> num) {
		<span style="color: #0000ff">this</span>.num = num;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> getNum() {
		<span style="color: #0000ff">return</span> num;
	}
	
}
</pre></div><p><br></span>Doctor</p>
<p>医生类，要有姓名和编号，编号用来供给病人来挂自己的号，姓名就不用再说了。然后给这些属性实现set、get方法。</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_959446" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_959446').style.display='none'; document.getElementById('Code_Open_Image_959446').style.display='inline'; document.getElementById('Code_Open_Text_959446').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_959446" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_959446').style.display='none'; getElementById('Code_Closed_Image_959446').style.display='inline'; getElementById('Code_Closed_Text_959446').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_959446" class="cnblogs_code_Collapse">Doctor</span><span style="display: none" id="Code_Open_Text_959446">
<span style="color: #0000ff">package</span> hospital;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> Doctor {
	<span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span> id;
	<span style="color: #0000ff">private</span> String name;
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> getId() {
		<span style="color: #0000ff">return</span> id;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setId(<span style="color: #0000ff">int</span> id) {
		<span style="color: #0000ff">this</span>.id = id;
	}
	<span style="color: #0000ff">public</span> String getName() {
		<span style="color: #0000ff">return</span> name;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setName(String name) {
		<span style="color: #0000ff">this</span>.name = name;
	}
	

}
</pre></div><br></span>
<p>&nbsp;</p>
<p></p>
<p>QueueServer</p>
<p>挂号排队系统的服务器，由这个服务器来实现对病人、医生的关联，实现病人挂号和医生叫号的功能。</p>
<p>具体方法为：为每个医生创建一个患者队列，装载对应的挂号患者。这些队列list，要先进先出即firstin，firstout，所以要用Queue。然后把这些队列初始化，由于是模拟的程序，所以初始化时先分别加入几个病人。</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_425052" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_425052').style.display='none'; document.getElementById('Code_Open_Image_425052').style.display='inline'; document.getElementById('Code_Open_Text_425052').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_425052" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_425052').style.display='none'; getElementById('Code_Closed_Image_425052').style.display='inline'; getElementById('Code_Closed_Text_425052').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_425052" class="cnblogs_code_Collapse">QueueServer</span><span style="display: none" id="Code_Open_Text_425052">
<span style="color: #0000ff">package</span> hospital;

<span style="color: #0000ff">import</span> java.util.LinkedList;
<span style="color: #0000ff">import</span> java.util.Queue;


<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> QueueServer {
	Queue&lt;Patient&gt; patientList1 = <span style="color: #0000ff">new</span> LinkedList&lt;Patient&gt;();
	Queue&lt;Patient&gt; patientList2 = <span style="color: #0000ff">new</span> LinkedList&lt;Patient&gt;();
	Queue&lt;Patient&gt; patientList3 = <span style="color: #0000ff">new</span> LinkedList&lt;Patient&gt;();
	
	<span style="color: #0000ff">public</span> Queue&lt;Patient&gt; init1(){
		<span style="color: #0000ff">for</span>(<span style="color: #0000ff">int</span> i=1;i&lt;=10;i++){
			Patient p = <span style="color: #0000ff">new</span> Patient();
		    p.setNum(i);
			patientList1.offer(p);
		}
		<span style="color: #0000ff">return</span> patientList1;
	}
	<span style="color: #0000ff">public</span> Queue&lt;Patient&gt; init2(){
		<span style="color: #0000ff">for</span>(<span style="color: #0000ff">int</span> i=1;i&lt;=15;i++){
			Patient p = <span style="color: #0000ff">new</span> Patient();
		    p.setNum(i);
			patientList2.offer(p);
		}
		<span style="color: #0000ff">return</span> patientList2;
	}
	<span style="color: #0000ff">public</span> Queue&lt;Patient&gt; init3(){
		<span style="color: #0000ff">for</span>(<span style="color: #0000ff">int</span> i=1;i&lt;=20;i++){
			Patient p = <span style="color: #0000ff">new</span> Patient();
		    p.setNum(i);
			patientList3.offer(p);
		}
		<span style="color: #0000ff">return</span> patientList3;
	}

}</pre></div><br></span>
<p>PatientUI</p>
<p>这是病人挂号系统的病人客户端。要有一个Text，几个Button（对应相应的医生），当然要有一个容器装载这些东西。</p>
<p>当患者点击医生按钮挂号后，患者会加入到医生对应的患者队列，Text内会显示所选择的医生或者专家、自己的号码和所排在位置（如果前面排队的人太多还会有小小的温馨提示呵）。</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_285995" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_285995').style.display='none'; document.getElementById('Code_Open_Image_285995').style.display='inline'; document.getElementById('Code_Open_Text_285995').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_285995" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_285995').style.display='none'; getElementById('Code_Closed_Image_285995').style.display='inline'; getElementById('Code_Closed_Text_285995').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_285995" class="cnblogs_code_Collapse">PatientUI</span><span style="display: none" id="Code_Open_Text_285995">
<span style="color: #0000ff">package</span> hospital;

<span style="color: #0000ff">import</span> java.util.Queue;

<span style="color: #0000ff">import</span> org.eclipse.swt.SWT;
<span style="color: #0000ff">import</span> org.eclipse.swt.events.SelectionAdapter;
<span style="color: #0000ff">import</span> org.eclipse.swt.events.SelectionEvent;
<span style="color: #0000ff">import</span> org.eclipse.swt.graphics.Font;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Button;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Display;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Shell;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Text;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> PatientUI {
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args){
		<span style="color: #0000ff">final</span> Display display = Display.getDefault();
		<span style="color: #0000ff">final</span> Shell shell = <span style="color: #0000ff">new</span> Shell();
		shell.setBounds(100, 100, 620, 450);
<span style="color: #008000">//		shell.setMaximized(true);</span>
		shell.setText("<span style="color: #8b0000">医院专家挂号系统</span>");
<span style="color: #008000">//		界面核心代码</span>
		QueueServer qs1 = <span style="color: #0000ff">new</span> QueueServer();
		<span style="color: #0000ff">final</span> Queue&lt;Patient&gt; patientList1 = qs1.init1();
		<span style="color: #0000ff">final</span> Text txt = <span style="color: #0000ff">new</span> Text(shell,SWT.MULTI);
		txt.setFont(<span style="color: #0000ff">new</span> Font(display,"<span style="color: #8b0000">宋体</span>",20,SWT.BOLD));
		txt.setBounds(100,50,400,200);
<span style="color: #008000">//		事件代码里要访问button，所以要添加final</span>
		<span style="color: #0000ff">final</span> Button button = <span style="color: #0000ff">new</span> Button(shell,SWT.Activate);
		button.addSelectionListener(<span style="color: #0000ff">new</span> SelectionAdapter(){
			<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> widgetSelected(SelectionEvent e){
				Patient patient = <span style="color: #0000ff">new</span> Patient();
				patient.setNum(patientList1.size()+1);
				patientList1.offer(patient);
				<span style="color: #0000ff">if</span>(patientList1.size()&lt;=20){
					txt.setText("<span style="color: #8b0000">\n您选择了  张医生\n\n您现在排在</span>"+patient.getNum()+"<span style="color: #8b0000">号位置上</span>");
				}<span style="color: #0000ff">else</span>{
					txt.setText("<span style="color: #8b0000">\n您选择了  张医生\n\n您现在排在</span>"+patient.getNum()+"<span style="color: #8b0000">号位置上\n\n前面已经排20多人，请考虑！</span>");
				}
			}
		});
		button.setBounds(50, 300, 150, 55); <span style="color: #008000">// 设置按钮位置</span>
		button.setFont(<span style="color: #0000ff">new</span> Font(display,"<span style="color: #8b0000">宋体</span>",12,SWT.BOLD));
		button.setText("<span style="color: #8b0000">专家 张医生</span>");<span style="color: #008000">// 设置按钮上的文字</span>
		<span style="color: #008000">// -----------------2号专家||||--------------------------------------------</span>
		QueueServer qs2 = <span style="color: #0000ff">new</span> QueueServer();
		<span style="color: #0000ff">final</span> Queue&lt;Patient&gt; patientList2 = qs2.init2();
		<span style="color: #0000ff">final</span> Button button2 = <span style="color: #0000ff">new</span> Button(shell,SWT.Activate);
		button2.addSelectionListener(<span style="color: #0000ff">new</span> SelectionAdapter(){
			<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> widgetSelected(SelectionEvent e){
				Patient patient = <span style="color: #0000ff">new</span> Patient();
				patient.setNum(patientList2.size()+1);
				patientList2.offer(patient);
				<span style="color: #0000ff">if</span>(patientList2.size()&lt;=20){
					txt.setText("<span style="color: #8b0000">\n您选择了  王医生\n\n您现在排在</span>"+patient.getNum()+"<span style="color: #8b0000">号位置上</span>");
				}<span style="color: #0000ff">else</span>{
					txt.setText("<span style="color: #8b0000">\n您选择了  王医生\n\n您现在排在</span>"+patient.getNum()+"<span style="color: #8b0000">号位置上\n\n前面已经排20多人，请考虑！</span>");
				}
			}
		});
		button2.setBounds(225, 300, 150, 55); <span style="color: #008000">// 设置按钮位置</span>
		button2.setFont(<span style="color: #0000ff">new</span> Font(display,"<span style="color: #8b0000">宋体</span>",12,SWT.BOLD));
		button2.setText("<span style="color: #8b0000">专家 王医生</span>");<span style="color: #008000">// 设置按钮上的文字</span>
<span style="color: #008000">//		--------------------3号专家||||------------------------------------</span>
		QueueServer qs3 = <span style="color: #0000ff">new</span> QueueServer();
		<span style="color: #0000ff">final</span> Queue&lt;Patient&gt; patientList3 = qs3.init3();
		<span style="color: #0000ff">final</span> Button button3 = <span style="color: #0000ff">new</span> Button(shell,SWT.Activate);
		button3.addSelectionListener(<span style="color: #0000ff">new</span> SelectionAdapter(){
			<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> widgetSelected(SelectionEvent e){
				Patient patient = <span style="color: #0000ff">new</span> Patient();
				patient.setNum(patientList3.size()+1);
				patientList3.offer(patient);
				<span style="color: #0000ff">if</span>(patientList3.size()&lt;=20){
					txt.setText("<span style="color: #8b0000">\n您选择了  李医生\n您现在排在</span>"+patient.getNum()+"<span style="color: #8b0000">号位置上</span>");
				}<span style="color: #0000ff">else</span>{
					txt.setText("<span style="color: #8b0000">\n您选择了  李医生\n\n您现在排在</span>"+patient.getNum()+"<span style="color: #8b0000">号位置上\n\n前面已经排20多人，请考虑！</span>");
				}
			}
		});
		button3.setBounds(400, 300, 150, 55); <span style="color: #008000">// 设置按钮位置</span>
		button3.setFont(<span style="color: #0000ff">new</span> Font(display,"<span style="color: #8b0000">宋体</span>",12,SWT.BOLD));
		button3.setText("<span style="color: #8b0000">专家 李医生</span>");<span style="color: #008000">// 设置按钮上的文字</span>
<span style="color: #008000">//		-----------------------END---------------------------------------</span>
		shell.layout();
		shell.open();
		<span style="color: #0000ff">while</span> (!shell.isDisposed()) {
			<span style="color: #0000ff">if</span> (!display.readAndDispatch())
				display.sleep();
		}
	}
}</pre></div><br></span>
<p>DoctorUI</p>
<p>这是医生的客户端，同样要有一个容器装载一个Text和一个Button。点击Button（下一位..），就会在他的病人队列里取出排在最前面的那个患者，在Text内显示这位前来就诊的患者的信息（如果所有病人都看完了，就会显示没有病人了）。</p>
<p>（这只是一个医生的客户端，其他医生的客户端的编写方法与之相同，这里就不一一写出来了..）</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_112501" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_112501').style.display='none'; document.getElementById('Code_Open_Image_112501').style.display='inline'; document.getElementById('Code_Open_Text_112501').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_112501" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_112501').style.display='none'; getElementById('Code_Closed_Image_112501').style.display='inline'; getElementById('Code_Closed_Text_112501').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_112501" class="cnblogs_code_Collapse">DoctorUI</span><span style="display: none" id="Code_Open_Text_112501">
<span style="color: #0000ff">package</span> hospital;

<span style="color: #0000ff">import</span> java.util.Queue;
<span style="color: #0000ff">import</span> org.eclipse.swt.SWT;
<span style="color: #0000ff">import</span> org.eclipse.swt.events.SelectionAdapter;
<span style="color: #0000ff">import</span> org.eclipse.swt.events.SelectionEvent;
<span style="color: #0000ff">import</span> org.eclipse.swt.graphics.Font;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Button;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Display;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Shell;
<span style="color: #0000ff">import</span> org.eclipse.swt.widgets.Text;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> DoctorUI {

	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args) {
		<span style="color: #008000">// TODO Auto-generated method stub</span>
		<span style="color: #0000ff">final</span> Display display = Display.getDefault();
		<span style="color: #0000ff">final</span> Shell shell = <span style="color: #0000ff">new</span> Shell();
		shell.setBounds(200, 100, 420, 350);
		shell.setText("<span style="color: #8b0000">医院专家挂号系统--张医生客户端</span>");
<span style="color: #008000">//		界面核心代码</span>
		QueueServer qs1 = <span style="color: #0000ff">new</span> QueueServer();
		<span style="color: #0000ff">final</span> Queue&lt;Patient&gt; patientListz = qs1.init1();
        <span style="color: #0000ff">final</span> Text txt = <span style="color: #0000ff">new</span> Text(shell,SWT.MULTI);
		txt.setFont(<span style="color: #0000ff">new</span> Font(display,"<span style="color: #8b0000">微软雅黑</span>",13,SWT.BOLD));
		txt.setBounds(50,50,300,100);
<span style="color: #008000">//		事件代码里要访问button，所以要添加final</span>
		<span style="color: #0000ff">final</span> Button button = <span style="color: #0000ff">new</span> Button(shell,SWT.Activate);
		button.addSelectionListener(<span style="color: #0000ff">new</span> SelectionAdapter(){
			<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> widgetSelected(SelectionEvent e){
				Patient p = patientListz.poll();
				<span style="color: #0000ff">if</span>(p!=<span style="color: #0000ff">null</span>){
					txt.setText("<span style="color: #8b0000">\n\t\t第   </span>"+p.getNum()+"<span style="color: #8b0000">  号病人</span>" +
							"<span style="color: #8b0000">\n\t 请到张医生医务室就医</span>");
				}
				<span style="color: #0000ff">else</span>{
					txt.setText("<span style="color: #8b0000">\n\t现在没有病人看病了</span>");
				}
			}
		});
		button.setBounds(100, 200, 200, 75); <span style="color: #008000">// 设置按钮位置</span>
		button.setFont(<span style="color: #0000ff">new</span> Font(display,"<span style="color: #8b0000">微软雅黑</span>",14,SWT.BOLD));
		button.setText("<span style="color: #8b0000">下一位..</span>");<span style="color: #008000">// 设置按钮上的文字</span>
<span style="color: #008000">//		---------------------END----------------------------</span>
		shell.layout();
		shell.open();
		<span style="color: #0000ff">while</span> (!shell.isDisposed()) {
			<span style="color: #0000ff">if</span> (!display.readAndDispatch())
				display.sleep();
		}

	}

}</pre></div><br></span>
<p>PatientUI</p>
<p>病人客户端的运行效果：</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/ea0af9fa5140_13B47/image_4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/ea0af9fa5140_13B47/image_thumb_1.png" width="244" height="178"></a> </p>
<p>DoctorUI</p>
<p>医生客户端的运行效果：</p>
<p></p>
<p></p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/ea0af9fa5140_13B47/image_8.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/ea0af9fa5140_13B47/image_thumb_3.png" width="244" height="205"></a></p>   <img src ="http://www.blogjava.net/min-water/aggbug/336700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/min-water/" target="_blank">Mineralwasser</a> 2010-11-01 16:33 <a href="http://www.blogjava.net/min-water/articles/336700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>选课</title><link>http://www.blogjava.net/min-water/articles/336539.html</link><dc:creator>Mineralwasser</dc:creator><author>Mineralwasser</author><pubDate>Fri, 29 Oct 2010 16:40:00 GMT</pubDate><guid>http://www.blogjava.net/min-water/articles/336539.html</guid><wfw:comment>http://www.blogjava.net/min-water/comments/336539.html</wfw:comment><comments>http://www.blogjava.net/min-water/articles/336539.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/min-water/comments/commentRss/336539.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/min-water/services/trackbacks/336539.html</trackback:ping><description><![CDATA[<p>选课系统很有意思，学生选择一门课程以后，这门课程就会添加到这个学生的选课列表里面，同时这名学生也添加到了选择这门课程的学生列表里面，也就是学生和课程是双向选择的。</p> <p>创建课程类Course，设置三个属性分别为名称、学分、学生名单。</p> <div class="cnblogs_code"><pre><img id="Code_Closed_Image_352919" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_352919').style.display='none'; document.getElementById('Code_Open_Image_352919').style.display='inline'; document.getElementById('Code_Open_Text_352919').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_352919" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_352919').style.display='none'; getElementById('Code_Closed_Image_352919').style.display='inline'; getElementById('Code_Closed_Text_352919').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_352919" class="cnblogs_code_Collapse">Course</span><span style="display: none" id="Code_Open_Text_352919">
<span style="color: #0000ff">import</span> java.util.ArrayList;
<span style="color: #0000ff">import</span> java.util.List;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> Course {
	<span style="color: #0000ff">private</span> String name;
	<span style="color: #0000ff">private</span> <span style="color: #0000ff">float</span> grade;
	<span style="color: #0000ff">private</span> List&lt;Student&gt; allStudents;
	
	<span style="color: #0000ff">public</span> Course(String name,<span style="color: #0000ff">float</span> grade){
		<span style="color: #0000ff">this</span>.setAllStudents(<span style="color: #0000ff">new</span> ArrayList&lt;Student&gt;());
		<span style="color: #0000ff">this</span>.setGrade(grade);
		<span style="color: #0000ff">this</span>.setName(name);
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> addStu(Student student){
		<span style="color: #0000ff">this</span>.allStudents.add(student);
	}
	
	<span style="color: #0000ff">public</span> String getName() {
		<span style="color: #0000ff">return</span> name;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setName(String name) {
		<span style="color: #0000ff">this</span>.name = name;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">float</span> getGrade() {
		<span style="color: #0000ff">return</span> grade;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setGrade(<span style="color: #0000ff">float</span> grade) {
		<span style="color: #0000ff">this</span>.grade = grade;
	}
	<span style="color: #0000ff">public</span> List&lt;Student&gt; getAllStudents() {
		<span style="color: #0000ff">return</span> allStudents;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setAllStudents(List&lt;Student&gt; allStudents) {
		<span style="color: #0000ff">this</span>.allStudents = allStudents;
	}
}</pre></div><br></span>
<div class="cnblogs_code">
<p></p>创建学生类Student，设置三个属性姓名、年龄、选课列表。</div>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_37635" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_37635').style.display='none'; document.getElementById('Code_Open_Image_37635').style.display='inline'; document.getElementById('Code_Open_Text_37635').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_37635" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_37635').style.display='none'; getElementById('Code_Closed_Image_37635').style.display='inline'; getElementById('Code_Closed_Text_37635').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_37635" class="cnblogs_code_Collapse">Student</span><span style="display: none" id="Code_Open_Text_37635">
<span style="color: #0000ff">import</span> java.util.ArrayList;
<span style="color: #0000ff">import</span> java.util.List;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> Student {
	<span style="color: #0000ff">private</span> String name;
	<span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span> age;
	<span style="color: #0000ff">private</span> List&lt;Course&gt; allCourse;<span style="color: #008000">//一个学生可以选多门课</span>
	
	<span style="color: #0000ff">public</span> Student(String name,<span style="color: #0000ff">int</span> age){
		<span style="color: #0000ff">this</span>.setAge(age);
		<span style="color: #0000ff">this</span>.setAllCourse(<span style="color: #0000ff">new</span> ArrayList&lt;Course&gt;());
		<span style="color: #0000ff">this</span>.setName(name);
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> addCourse(Course course){
		<span style="color: #0000ff">this</span>.allCourse.add(course);
	}
	
	<span style="color: #0000ff">public</span> String getName() {
		<span style="color: #0000ff">return</span> name;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setName(String name) {
		<span style="color: #0000ff">this</span>.name = name;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> getAge() {
		<span style="color: #0000ff">return</span> age;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setAge(<span style="color: #0000ff">int</span> age) {
		<span style="color: #0000ff">this</span>.age = age;
	}
	<span style="color: #0000ff">public</span> List&lt;Course&gt; getAllCourse() {
		<span style="color: #0000ff">return</span> allCourse;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setAllCourse(List&lt;Course&gt; allCourse) {
		<span style="color: #0000ff">this</span>.allCourse = allCourse;
	}
}</pre></div><br></span>
<p></p>
<p>创建测试类TestCourse，在里面创建五个学生三门课程，并对他们互相选择，并把每个学生选得课程添加到各自的选课列表，把选择每门课程的学生添加到各科的学生列表，然后进行遍历，学生的课程列表和课程的学生列表。</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_217369" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_217369').style.display='none'; document.getElementById('Code_Open_Image_217369').style.display='inline'; document.getElementById('Code_Open_Text_217369').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_217369" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_217369').style.display='none'; getElementById('Code_Closed_Image_217369').style.display='inline'; getElementById('Code_Closed_Text_217369').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_217369" class="cnblogs_code_Collapse">TestCourse</span><span style="display: none" id="Code_Open_Text_217369">
<span style="color: #0000ff">import</span> java.util.Iterator;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> TestCourse {
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args) {
		Student stu1 = <span style="color: #0000ff">new</span> Student("<span style="color: #8b0000">张三</span>",20);
		Student stu2 = <span style="color: #0000ff">new</span> Student("<span style="color: #8b0000">李四</span>",21);
		Student stu3 = <span style="color: #0000ff">new</span> Student("<span style="color: #8b0000">王五</span>",22);
		Student stu4 = <span style="color: #0000ff">new</span> Student("<span style="color: #8b0000">赵柳</span>",23);
		Student stu5 = <span style="color: #0000ff">new</span> Student("<span style="color: #8b0000">孙琦</span>",24);
		Course c1 = <span style="color: #0000ff">new</span> Course("<span style="color: #8b0000">Java se 基础</span>",2.0f);
		Course c2 = <span style="color: #0000ff">new</span> Course("<span style="color: #8b0000">Java se web</span>",3.0f);
		Course c3 = <span style="color: #0000ff">new</span> Course("<span style="color: #8b0000">分布式开发</span>",5.0f);
<span style="color: #008000">//		设置关系</span>
		stu1.addCourse(c1);
		c1.addStu(stu1);
		stu1.addCourse(c2);
		c2.addStu(stu1);
		
		stu2.addCourse(c2);
		c2.addStu(stu2);
		
		stu3.addCourse(c1);
		c1.addStu(stu3);
		stu3.addCourse(c2);
		c2.addStu(stu3);
		stu3.addCourse(c3);
		c3.addStu(stu3);
		
		stu4.addCourse(c3);
		c3.addStu(stu4);
		
		stu5.addCourse(c3);
		c3.addStu(stu5);
		
		System.out.println("<span style="color: #8b0000">学生姓名：</span>"+stu1.getName());
		Iterator&lt;Course&gt; it1 = stu1.getAllCourse().iterator();
		<span style="color: #0000ff">while</span>(it1.hasNext()){
			Course c = it1.next();
			System.out.println("<span style="color: #8b0000">\t|-课程名称：</span>"+c.getName()+"<span style="color: #8b0000">,学分：</span>"+c.getGrade());
		}
		
		System.out.println("<span style="color: #8b0000">课程名称：</span>"+c3.getName());
		Iterator&lt;Student&gt; it2 = c3.getAllStudents().iterator();
		<span style="color: #0000ff">while</span>(it2.hasNext()){
			Student s = it2.next();
			System.out.println("<span style="color: #8b0000">\t|-学生姓名：</span>"+s.getName()+"<span style="color: #8b0000">,年龄：</span>"+s.getAge());
		}
	}

}
</pre></div><br></span>
<p></p>
<p>结果显示（只打印stu1和c1的列表）</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/c43635344d34_14E44/image_2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/c43635344d34_14E44/image_thumb.png" width="336" height="131"></a></p> <img src ="http://www.blogjava.net/min-water/aggbug/336539.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/min-water/" target="_blank">Mineralwasser</a> 2010-10-30 00:40 <a href="http://www.blogjava.net/min-water/articles/336539.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>消息队列</title><link>http://www.blogjava.net/min-water/articles/336537.html</link><dc:creator>Mineralwasser</dc:creator><author>Mineralwasser</author><pubDate>Fri, 29 Oct 2010 16:23:00 GMT</pubDate><guid>http://www.blogjava.net/min-water/articles/336537.html</guid><wfw:comment>http://www.blogjava.net/min-water/comments/336537.html</wfw:comment><comments>http://www.blogjava.net/min-water/articles/336537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/min-water/comments/commentRss/336537.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/min-water/services/trackbacks/336537.html</trackback:ping><description><![CDATA[<p>先创建一个message类，属性为发送方、接收方、内容。</p> <div class="cnblogs_code"><pre><img id="Code_Closed_Image_109305" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_109305').style.display='none'; document.getElementById('Code_Open_Image_109305').style.display='inline'; document.getElementById('Code_Open_Text_109305').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_109305" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_109305').style.display='none'; getElementById('Code_Closed_Image_109305').style.display='inline'; getElementById('Code_Closed_Text_109305').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_109305" class="cnblogs_code_Collapse">Message</span><span style="display: none" id="Code_Open_Text_109305">
<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> Message {
	<span style="color: #0000ff">private</span> String from;
	<span style="color: #0000ff">private</span> String to;
	<span style="color: #0000ff">private</span> String content;
	<span style="color: #0000ff">public</span> String getFrom() {
		<span style="color: #0000ff">return</span> from;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setFrom(String from) {
		<span style="color: #0000ff">this</span>.from = from;
	}
	<span style="color: #0000ff">public</span> String getTo() {
		<span style="color: #0000ff">return</span> to;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setTo(String to) {
		<span style="color: #0000ff">this</span>.to = to;
	}
	<span style="color: #0000ff">public</span> String getContent() {
		<span style="color: #0000ff">return</span> content;
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setContent(String content) {
		<span style="color: #0000ff">this</span>.content = content;
	}
	
}
</pre></div><br></span>
<p>创建QQInterface接口，内部创建发送和接收消息的方法。</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_380407" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_380407').style.display='none'; document.getElementById('Code_Open_Image_380407').style.display='inline'; document.getElementById('Code_Open_Text_380407').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_380407" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_380407').style.display='none'; getElementById('Code_Closed_Image_380407').style.display='inline'; getElementById('Code_Closed_Text_380407').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_380407" class="cnblogs_code_Collapse">QQInterface</span><span style="display: none" id="Code_Open_Text_380407">
<span style="color: #0000ff">public</span> <span style="color: #0000ff">interface</span> QQInterface {
	<span style="color: #0000ff">void</span> sendMsg(Message msg);
	Message receiveMsg(String name);

}
</pre></div><br></span>
<p>创建QQServer服务器，作为消息的转运站。</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_603759" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_603759').style.display='none'; document.getElementById('Code_Open_Image_603759').style.display='inline'; document.getElementById('Code_Open_Text_603759').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_603759" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_603759').style.display='none'; getElementById('Code_Closed_Image_603759').style.display='inline'; getElementById('Code_Closed_Text_603759').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_603759" class="cnblogs_code_Collapse">QQServer</span><span style="display: none" id="Code_Open_Text_603759">
<span style="color: #0000ff">import</span> java.util.HashMap;
<span style="color: #0000ff">import</span> java.util.Map;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> QQServer {
	<span style="color: #0000ff">static</span> Map&lt;String,Message&gt; serverMap = <span style="color: #0000ff">new</span> HashMap&lt;String,Message&gt;();
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> serverReceiveMsg(Message msg){
		serverMap.put(msg.getTo(),msg);
		System.out.println(msg.getFrom()+"<span style="color: #8b0000"> </span>"+"<span style="color: #8b0000"> </span>"+msg.getContent());
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> Message asked(String name){
		Message msg = serverMap.get(name);
		<span style="color: #0000ff">return</span> msg;
	}
}
</pre></div><br></span>
<p>QQ1，实现QQInterface接口及方法，作为发送方。</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_959844" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_959844').style.display='none'; document.getElementById('Code_Open_Image_959844').style.display='inline'; document.getElementById('Code_Open_Text_959844').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_959844" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_959844').style.display='none'; getElementById('Code_Closed_Image_959844').style.display='inline'; getElementById('Code_Closed_Text_959844').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_959844" class="cnblogs_code_Collapse">QQ1</span><span style="display: none" id="Code_Open_Text_959844">
<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> QQ1 <span style="color: #0000ff">implements</span> QQInterface{
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args){
		Message msg = <span style="color: #0000ff">new</span> Message();
		msg.setFrom("<span style="color: #8b0000">QQ1</span>");
		msg.setTo("<span style="color: #8b0000">QQ2</span>");
		msg.setContent("<span style="color: #8b0000">I am QQ1 。</span>");
		QQ1 q = <span style="color: #0000ff">new</span> QQ1();
		q.sendMsg(msg);
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> sendMsg(Message msg){
		QQServer.serverReceiveMsg(msg);
	}
	@Override
	<span style="color: #0000ff">public</span> Message receiveMsg(String name) {
		Message msg = QQServer.asked(name);
		System.out.println("<span style="color: #8b0000">******</span>"+msg.getContent());
		<span style="color: #0000ff">return</span> msg;
	}

}
</pre></div><br></span>
<p></p>
<p>QQ2，实现QQInterface接口及方法，作为接收方。</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_490416" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_490416').style.display='none'; document.getElementById('Code_Open_Image_490416').style.display='inline'; document.getElementById('Code_Open_Text_490416').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_490416" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_490416').style.display='none'; getElementById('Code_Closed_Image_490416').style.display='inline'; getElementById('Code_Closed_Text_490416').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_490416" class="cnblogs_code_Collapse">QQ2</span><span style="display: none" id="Code_Open_Text_490416">
<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> QQ2 <span style="color: #0000ff">implements</span> QQInterface{
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args){
		Message msg = <span style="color: #0000ff">new</span> Message();
		msg.setFrom("<span style="color: #8b0000">QQ2</span>");
		msg.setTo("<span style="color: #8b0000">QQ1</span>");
		msg.setContent("<span style="color: #8b0000">I am QQ2 。</span>");
		QQ2 q = <span style="color: #0000ff">new</span> QQ2();
		q.sendMsg(msg);
	}
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> sendMsg(Message msg){
		QQServer.serverReceiveMsg(msg);
	}
	@Override
	<span style="color: #0000ff">public</span> Message receiveMsg(String name) {
		Message msg = QQServer.asked(name);
		System.out.println("<span style="color: #8b0000">******</span>"+msg.getContent());
		<span style="color: #0000ff">return</span> msg;
	}
}
</pre></div><br></span>
<p>创建Test测试类</p>
<div class="cnblogs_code"><pre><img id="Code_Closed_Image_478856" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_478856').style.display='none'; document.getElementById('Code_Open_Image_478856').style.display='inline'; document.getElementById('Code_Open_Text_478856').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_478856" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_478856').style.display='none'; getElementById('Code_Closed_Image_478856').style.display='inline'; getElementById('Code_Closed_Text_478856').style.display='inline';" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span id="Code_Closed_Text_478856" class="cnblogs_code_Collapse">Test</span><span style="display: none" id="Code_Open_Text_478856">
<span style="color: #0000ff">import</span> java.util.ArrayList;
<span style="color: #0000ff">import</span> java.util.HashMap;
<span style="color: #0000ff">import</span> java.util.List;
<span style="color: #0000ff">import</span> java.util.Map;

<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> Test {
	<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args){
		Map&lt;String,List&lt;Message&gt;&gt; QQMap = <span style="color: #0000ff">new</span> HashMap&lt;String,List&lt;Message&gt;&gt;();
		List&lt;Message&gt; msgList = <span style="color: #0000ff">new</span> ArrayList&lt;Message&gt;();
		
<span style="color: #008000">//		第一次发送消息</span>
		Message msg1 = <span style="color: #0000ff">new</span> Message();
		msg1.setFrom("<span style="color: #8b0000">QQ1</span>");
		msg1.setTo("<span style="color: #8b0000">QQ2</span>");
		msg1.setContent("<span style="color: #8b0000">HI!</span>");
		msgList.add(msg1);
		QQMap.put(msg1.getTo(), msgList);
<span style="color: #008000">//		第二次发送消息</span>
		Message msg2 = <span style="color: #0000ff">new</span> Message();
		msg2.setFrom("<span style="color: #8b0000">QQ1</span>");
		msg2.setTo("<span style="color: #8b0000">QQ2</span>");
		msg2.setContent("<span style="color: #8b0000">Hello World !</span>");
		msgList.add(msg2);
		QQMap.put(msg2.getTo(), msgList);
		
        List&lt;Message&gt; qq2MsgList = QQMap.get("<span style="color: #8b0000">QQ2</span>");
		<span style="color: #0000ff">for</span>(Message m:qq2MsgList){<span style="color: #008000">//打印QQ1发给QQ2消息</span>
			System.out.println(m.getContent());
		}
	}
}
</pre></div><br></span>
<p></p>
<p>结果显示</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/00762ac87d8c_15064/image_2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/min-water/WindowsLiveWriter/00762ac87d8c_15064/image_thumb.png" width="200" height="56"></a></p> <img src ="http://www.blogjava.net/min-water/aggbug/336537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/min-water/" target="_blank">Mineralwasser</a> 2010-10-30 00:23 <a href="http://www.blogjava.net/min-water/articles/336537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>