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

<channel>
	<title>中文 &#187; wangxiaohong123</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/wangxiaohong123/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Sat, 26 May 2012 06:34:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>多线程知识</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/09/29/400008758/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/09/29/400008758/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 03:11:19 +0000</pubDate>
		<dc:creator>wangxiaohong123</dc:creator>
				<category><![CDATA[博客征文专栏]]></category>
		<category><![CDATA[并行计算]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/09/29/400008758/</guid>
		<description><![CDATA[  一：单线程示例 view plainprint? package Thread; import java.io.PrintWriter; public class WithoutThread{ static PrintWriter out = new PrintWriter(System.out,true); public static void main(String[] args) { NoThreadPseudoIO pseudo = new NoThreadPseudoIO(); pseudo.run(); showElapsedTime("Anthor task starts"); } static long baseTime =System.currentTimeMillis(); static void showElapsedTime(String message){ long elapsedTime = System.currentTimeMillis()-baseTime; out.println(message + " at " +(elapsedTime/1000.0)+" seconds"); } } class [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>一：单线程示例<br />
view plainprint?<br />
package Thread;</p>
<p>import java.io.PrintWriter;</p>
<p>public class WithoutThread{<br />
static PrintWriter out = new PrintWriter(System.out,true);</p>
<p>public static void main(String[] args) {<br />
NoThreadPseudoIO pseudo = new NoThreadPseudoIO();<br />
pseudo.run();<br />
showElapsedTime("Anthor task starts");<br />
}<br />
static long baseTime =System.currentTimeMillis();<br />
static void showElapsedTime(String message){<br />
long elapsedTime = System.currentTimeMillis()-baseTime;<br />
out.println(message + " at " +(elapsedTime/1000.0)+" seconds");<br />
}<br />
}</p>
<p>class NoThreadPseudoIO{<br />
int data=-1;<br />
NoThreadPseudoIO(){<br />
WithoutThread.showElapsedTime("NoThreadPseudoIO created");<br />
}<br />
public void run(){<br />
WithoutThread.showElapsedTime("NoThreadPseudoIO starts");<br />
try{<br />
Thread.sleep(10000);<br />
data=99;<br />
WithoutThread.showElapsedTime("NoThreadPseudoIO finishes");<br />
}catch(InterruptedException e){</p>
<p>}<br />
}<br />
}</p>
<p>结果：<br />
NoThreadPseudoIO created at 0.0 seconds<br />
NoThreadPseudoIO starts at 0.0 seconds<br />
NoThreadPseudoIO finishes at 10.0 seconds<br />
Anthor task starts at 10.0 seconds</p>
<p>二：多线程的生成<br />
1：作为Thread子类<br />
这个子类定义自己的run()方法来覆盖Thread类的run()方法，这个run()方法局势任务运行的地方<br />
run()方法是java运行时为了启动线程而调用的第一个用户定义方法，然后new词句生成这个子类的实例，并调用线程的start方法执行run()方法。<br />
代码：<br />
view plainprint?<br />
package Thread;</p>
<p>import java.io.PrintWriter;<br />
public class WithThread {<br />
static PrintWriter out = new PrintWriter(System.out,true);</p>
<p>public static void main(String[] args) {<br />
ThreadPseudoIO pseudo = new ThreadPseudoIO();<br />
pseudo.start();<br />
showElapsedTime("Anthor task starts");<br />
}<br />
static long baseTime =System.currentTimeMillis();<br />
static void showElapsedTime(String message){<br />
long elapsedTime = System.currentTimeMillis()-baseTime;<br />
out.println(message + " at " +(elapsedTime/1000.0)+" seconds");<br />
}<br />
}<br />
class ThreadPseudoIO extends Thread{<br />
int data=-1;<br />
ThreadPseudoIO(){<br />
WithoutThread.showElapsedTime("ThreadPseudoIO created");<br />
}<br />
public void run(){<br />
WithoutThread.showElapsedTime("ThreadPseudoIO starts");<br />
try{<br />
Thread.sleep(10000);<br />
data=999;<br />
WithoutThread.showElapsedTime("ThreadPseudoIO finishes");<br />
}catch(InterruptedException e){</p>
<p>}<br />
}<br />
}</p>
<p>结果：<br />
ThreadPseudoIO created at 0.0 seconds<br />
ThreadPseudoIO starts at 0.0 seconds<br />
Anthor task starts at 0.0 seconds<br />
ThreadPseudoIO finishes at 10.0 seconds</p>
<p>2：声明一个实现Runnable接口的类<br />
Runable接口需要一个方法来实现，即run()方法<br />
首先用new语句生成这个了类的实例<br />
然后用另一个new语句生成Thread实例<br />
最后调用这个线程实例的start()方法 ，于是开始运行run()方法中定义的任务。<br />
代码：<br />
view plainprint?<br />
import java.io.PrintWriter;</p>
<p>public class RunnableThread {</p>
<p>static PrintWriter out = new PrintWriter(System.out,true);</p>
<p>public static void main(String[] args) {<br />
RunnablePseudoIO pseudo = new RunnablePseudoIO();<br />
Thread thread = new Thread(pseudo);<br />
thread.start();<br />
showElapsedTime("Anthor task starts");<br />
}<br />
static long baseTime =System.currentTimeMillis();<br />
static void showElapsedTime(String message){<br />
long elapsedTime = System.currentTimeMillis()-baseTime;<br />
out.println(message + " at " +(elapsedTime/1000.0)+" seconds");<br />
}<br />
}<br />
class RunnablePseudoIO implements Runnable{<br />
int data= -1;<br />
RunnablePseudoIO(){<br />
RunnableThread.showElapsedTime("RunnablePseudoIO creates");<br />
}</p>
<p>public void run() {<br />
RunnableThread.showElapsedTime("RunnablePseudoIO starts");<br />
try {<br />
Thread.sleep(10000);<br />
} catch (InterruptedException e) {<br />
e.printStackTrace();<br />
}<br />
data=999;<br />
RunnableThread.showElapsedTime("RunnablePseudoIO finishes");</p>
<p>}</p>
<p>}</p>
<p>结果：<br />
RunnablePseudoIO creates at 0.0 seconds<br />
RunnablePseudoIO starts at 0.016 seconds<br />
Anthor task starts at 0.016 seconds<br />
RunnablePseudoIO finishes at 10.016 seconds</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/09/29/400008758/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>多线程控制方法</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/09/29/400008760/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/09/29/400008760/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 03:10:31 +0000</pubDate>
		<dc:creator>wangxiaohong123</dc:creator>
				<category><![CDATA[博客征文专栏]]></category>
		<category><![CDATA[并行计算]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/09/29/400008760/</guid>
		<description><![CDATA[  1：start():用于开始执行run()方法中定义的线程体 2：sleep()：调整java运行时间，指定调用线程的睡眠时间 3：jion()：用于调用线程等待本线程结束 4：yield()：暂时停止调用线程并将其放在队列末尾，等待另一轮执行，使同一优先级的其他线程有机会运行 view plainprint? import java.io.PrintWriter; public class MethodTest { static PrintWriter out = new PrintWriter(System.out,true); public static void main(String[] args) { FristThread frist = new FristThread(); SecondThread second = new SecondThread(); frist.start(); second.start(); try { out.println("waiting for first thread to finishing..."); frist.join(); out.println("it is a long wait!"); out.println("waking up second thread..."); [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>1：start():用于开始执行run()方法中定义的线程体<br />
2：sleep()：调整java运行时间，指定调用线程的睡眠时间<br />
3：jion()：用于调用线程等待本线程结束<br />
4：yield()：暂时停止调用线程并将其放在队列末尾，等待另一轮执行，使同一优先级的其他线程有机会运行<br />
view plainprint?<br />
import java.io.PrintWriter;</p>
<p>public class MethodTest {<br />
static PrintWriter out = new PrintWriter(System.out,true);<br />
public static void main(String[] args) {<br />
FristThread frist = new FristThread();<br />
SecondThread second = new SecondThread();<br />
frist.start();<br />
second.start();<br />
try {<br />
out.println("waiting for first thread to finishing...");<br />
frist.join();<br />
out.println("it is a long wait!");<br />
out.println("waking up second thread...");<br />
synchronized(second){<br />
second.notify();<br />
}<br />
out.println("waking for second thread to finishing ...");<br />
second.join();<br />
} catch (InterruptedException e) {<br />
e.printStackTrace();<br />
}</p>
<p>out.println("i'm ready to finish too.");<br />
}</p>
<p>}</p>
<p>class FristThread extends Thread{<br />
public void run(){<br />
MethodTest.out.println("First thread starts running");<br />
try {<br />
sleep(10000);<br />
} catch (InterruptedException e) {<br />
e.printStackTrace();<br />
}<br />
MethodTest.out.println("First thread finishes running");<br />
}<br />
}</p>
<p>class SecondThread extends Thread{<br />
public synchronized void run(){<br />
MethodTest.out.println("Second thread starts running");<br />
MethodTest.out.println("Second thread suspends running");<br />
try {<br />
wait();<br />
} catch (InterruptedException e) {<br />
e.printStackTrace();<br />
}<br />
MethodTest.out.println("Second thread run again and finishes ");</p>
<p>}<br />
}</p>
<p>结果：<br />
First thread starts running<br />
waiting for first thread to finishing...<br />
Second thread starts running<br />
Second thread suspends running<br />
First thread finishes running<br />
it is a long wait!<br />
waking up second thread...<br />
waking for second thread to finishing ...<br />
Second thread run again and finishes<br />
i'm ready to finish too.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/09/29/400008760/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

