﻿<?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-咬定青山不放松，立根原在破岩中。千磨万击还坚劲，任尔东西南北风。-随笔分类-java</title><link>http://www.blogjava.net/javawin/category/42231.html</link><description>《竹石》
</description><language>zh-cn</language><lastBuildDate>Thu, 18 Mar 2010 06:55:12 GMT</lastBuildDate><pubDate>Thu, 18 Mar 2010 06:55:12 GMT</pubDate><ttl>60</ttl><item><title>java笔试知识点</title><link>http://www.blogjava.net/javawin/archive/2010/03/15/315448.html</link><dc:creator>任小为</dc:creator><author>任小为</author><pubDate>Mon, 15 Mar 2010 03:16:00 GMT</pubDate><guid>http://www.blogjava.net/javawin/archive/2010/03/15/315448.html</guid><wfw:comment>http://www.blogjava.net/javawin/comments/315448.html</wfw:comment><comments>http://www.blogjava.net/javawin/archive/2010/03/15/315448.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javawin/comments/commentRss/315448.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javawin/services/trackbacks/315448.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;HashMap&amp;Hashtable:Map接口的实现类,将惟一键映射到特定的值上:&lt;key,value&gt;.HashMap 允许key或value为null.Hashtable的方法是Synchronize的.多个线程访问Hashtable时,不需要为方法实现同步. &nbsp;Collection &amp;Collections:Col...&nbsp;&nbsp;<a href='http://www.blogjava.net/javawin/archive/2010/03/15/315448.html'>阅读全文</a><img src ="http://www.blogjava.net/javawin/aggbug/315448.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javawin/" target="_blank">任小为</a> 2010-03-15 11:16 <a href="http://www.blogjava.net/javawin/archive/2010/03/15/315448.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生产者-消费者（线程问题）</title><link>http://www.blogjava.net/javawin/archive/2009/11/11/301954.html</link><dc:creator>任小为</dc:creator><author>任小为</author><pubDate>Wed, 11 Nov 2009 05:17:00 GMT</pubDate><guid>http://www.blogjava.net/javawin/archive/2009/11/11/301954.html</guid><wfw:comment>http://www.blogjava.net/javawin/comments/301954.html</wfw:comment><comments>http://www.blogjava.net/javawin/archive/2009/11/11/301954.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/javawin/comments/commentRss/301954.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/javawin/services/trackbacks/301954.html</trackback:ping><description><![CDATA[<p><font style="background-color: #b6debb">//生产者-消费者 问题<br />
</font></p>
<p><font style="background-color: #b6debb">public class Pro_Cus {<br />
&nbsp;<br />
&nbsp;public static void main(String[] args){<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;Container con=new Container();<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;Producer p=new Producer(con);<br />
&nbsp;&nbsp;Customer c=new Customer(con);<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;new Thread(p).start();//各定义了两个线程，可以多个线程<br />
&nbsp;&nbsp;new Thread(c).start();<br />
&nbsp;&nbsp;new Thread(p).start();<br />
&nbsp;&nbsp;new Thread(c).start();<br />
&nbsp;}</font></p>
<p><font style="background-color: #b6debb">}<br />
//产品<br />
class Product{<br />
&nbsp;<br />
&nbsp;int id;<br />
&nbsp;public Product(int id){<br />
&nbsp;&nbsp;this.id=id;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public String toString(){<br />
&nbsp;&nbsp;return ""+this.id;<br />
&nbsp;}<br />
&nbsp;<br />
}<br />
//装产品容器<br />
class Container{<br />
&nbsp;Product[] num=new Product[10];<br />
&nbsp;int index=0;<br />
&nbsp;<br />
&nbsp;public synchronized void push(Product pro){<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;while(index==num.length){<br />
&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;this.wait();<br />
&nbsp;&nbsp;&nbsp;} catch (InterruptedException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;this.notifyAll();&nbsp; //倘若只有一个消费线程则，用this.notify();<br />
&nbsp;&nbsp;num[index]=pro;<br />
&nbsp;&nbsp;index++;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public synchronized Product pop(){<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;while(index==0){<br />
&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;this.wait();<br />
&nbsp;&nbsp;&nbsp;} catch (InterruptedException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;this.notifyAll();//倘若只有一个生产者线程，用this.notify<br />
&nbsp;&nbsp;&nbsp; index--;<br />
&nbsp;&nbsp;&nbsp; return num[index];<br />
&nbsp;<br />
&nbsp;}<br />
&nbsp;<br />
}</font></p>
<p><font style="background-color: #b6debb">//生产者<br />
class Producer implements Runnable{<br />
&nbsp;<br />
&nbsp;Container con=null;<br />
&nbsp;<br />
&nbsp;public Producer(Container con){<br />
&nbsp;&nbsp;this.con=con;<br />
&nbsp;}<br />
&nbsp;public void run(){<br />
&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;20;i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;Thread.sleep(10); //10毫秒生产一个<br />
&nbsp;&nbsp;} catch (InterruptedException e) {<br />
&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp; con.push(new Product(i));<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("生产了产品："+i);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;}<br />
&nbsp;<br />
}</font></p>
<p><font style="background-color: #b6debb">//消费者<br />
class Customer implements Runnable{<br />
&nbsp;<br />
&nbsp;Container con=null;<br />
&nbsp;<br />
&nbsp;public Customer(Container con){<br />
&nbsp;&nbsp;this.con=con;<br />
&nbsp;}<br />
&nbsp;public void run(){<br />
&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;20;i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp; Thread.sleep((int)(Math.random()*3000));//随机小于等于3秒消费一个<br />
&nbsp;&nbsp;&nbsp;//Thread.sleep(3000);//为3秒消费一个用，这种形式<br />
&nbsp;&nbsp;} catch (InterruptedException e) {<br />
&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp; Product pro=con.pop();<br />
&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("消费了产品："+pro);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;}<br />
&nbsp;<br />
}</font></p>
<p><font style="background-color: #b6debb"></font>&nbsp;</p>
<p><font style="background-color: #b6debb"></font>&nbsp;</p>
<p><font style="background-color: #b6debb"></font>&nbsp;</p>
<p><font style="background-color: #b6debb"></font>&nbsp;</p>
<p><font style="background-color: #b6debb"></font>&nbsp;</p>
<p><font style="background-color: #b6debb"></font>&nbsp;</p>
<p><font style="background-color: #b6debb"></font>&nbsp;</p>
<p><font style="background-color: #b6debb"></font>&nbsp;</p>
<p><font style="background-color: #b6debb"><br />
</font>&nbsp;</p>
<img src ="http://www.blogjava.net/javawin/aggbug/301954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/javawin/" target="_blank">任小为</a> 2009-11-11 13:17 <a href="http://www.blogjava.net/javawin/archive/2009/11/11/301954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>