<?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; ujswml</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/ujswml/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>线程中的 start（）和 run（）方法的区别</title>
		<link>http://software.intel.com/zh-cn/blogs/2010/09/15/start-run/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2010/09/15/start-run/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 07:37:34 +0000</pubDate>
		<dc:creator>ujswml</dc:creator>
				<category><![CDATA[其他]]></category>
		<category><![CDATA[博客征文专栏]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2010/09/15/start-run/</guid>
		<description><![CDATA[Java 线程一直是一个比较容易困扰的地方,首先，我们来认识下怎样生存线程。 认识 Thread 和 Runnable java中实现多线程有两种途径：继承Thread类或者实现Runnable接口。Runnable是接口，建议用接口的方式生成线程，因为接口可以实现多继承，况且Runnable只有一个run方法，很适合继承。在使用Thread的时候只需继承Thread，并且new一个实例出来，调用 start()方法即可以启动一个线程。 Thread Test = new Thread(); Test.start(); 在使用Runnable的时候需要先new一个实现Runnable的实例，之后启动Thread即可。 Test impelements Runnable; Test t = new Test(); Thread test = new Thread(t); test.start(); 总结：Thread和Runnable是实现java多线程的2种方式，runable是接口，thread是类，建议使用runable实现 java多线程，不管如何，最终都需要通过thread.start()来使线程处于可运行状态。 下面我们来谈谈本文重点，start（）和run（）方法的区别 1） start： 用start方法来启动线程，真正实现了多线程运行，这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的 start()方法来启动一个线程，这时此线程处于就绪（可运行）状态，并没有运行，一旦得到cpu时间片，就开始执行run()方法，这里方法 run()称为线程体，它包含了要执行的这个线程的内容，Run方法运行结束，此线程随即终止。 2） run： run()方法只是类的一个普通方法而已，如果直接调用Run方法，程序中依然只有主线程这一个线程，其程序执行路径还是只有一条，还是要顺序执行，还是要等待run方法体执行完毕后才可继续执行下面的代码，这样就没有达到写线程的目的。 总结：调用start方法方可启动线程，而run方法只是thread的一个普通方法调用，还是在主线程里执行。 这两个方法应该都比较熟悉，把需要并行处理的代码放在run()方法中，start()方法启动线程将自动调用 run()方法，这是由jvm的内存机制规定的。并且run()方法必须是public访问权限，返回值类型为void. 下面以一个简单例子来说明： 结果为： current Thread :main I : 0 current Thread :main I [...]]]></description>
			<content:encoded><![CDATA[<p>Java 线程一直是一个比较容易困扰的地方,首先，我们来认识下怎样生存线程。<br />
认识 Thread 和 Runnable</p>
<p>java中实现多线程有两种途径：继承Thread类或者实现Runnable接口。Runnable是接口，建议用接口的方式生成线程，因为接口可以实现多继承，况且Runnable只有一个run方法，很适合继承。在使用Thread的时候只需继承Thread，并且new一个实例出来，调用 start()方法即可以启动一个线程。</p>
<p>Thread Test = new Thread();</p>
<p>Test.start();</p>
<p>在使用Runnable的时候需要先new一个实现Runnable的实例，之后启动Thread即可。</p>
<p>Test impelements Runnable;</p>
<p>Test t = new Test();</p>
<p>Thread test = new Thread(t);</p>
<p>test.start();</p>
<p>总结：Thread和Runnable是实现java多线程的2种方式，runable是接口，thread是类，建议使用runable实现 java多线程，不管如何，最终都需要通过thread.start()来使线程处于可运行状态。<br />
下面我们来谈谈本文重点，start（）和run（）方法的区别<br />
1） start：</p>
<p>用start方法来启动线程，真正实现了多线程运行，这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的 start()方法来启动一个线程，这时此线程处于就绪（可运行）状态，并没有运行，一旦得到cpu时间片，就开始执行run()方法，这里方法 run()称为线程体，它包含了要执行的这个线程的内容，Run方法运行结束，此线程随即终止。</p>
<p>2） run：</p>
<p>run()方法只是类的一个普通方法而已，如果直接调用Run方法，程序中依然只有主线程这一个线程，其程序执行路径还是只有一条，还是要顺序执行，还是要等待run方法体执行完毕后才可继续执行下面的代码，这样就没有达到写线程的目的。</p>
<p>总结：调用start方法方可启动线程，而run方法只是thread的一个普通方法调用，还是在主线程里执行。</p>
<p>这两个方法应该都比较熟悉，把需要并行处理的代码放在run()方法中，start()方法启动线程将自动调用 run()方法，这是由jvm的内存机制规定的。并且run()方法必须是public访问权限，返回值类型为void.<br />
下面以一个简单例子来说明：<br />
<img src="http://images.csdn.net/upimgs/liyp/boke.png" alt="" /><br />
结果为：<br />
current Thread :main I : 0<br />
current Thread :main I : 10<br />
current Thread :main I : 20<br />
current Thread :main I : 30<br />
current Thread :main I : 40<br />
current Thread :Thread-1 I : 0<br />
current Thread :Thread-1 I : 10<br />
current Thread :Thread-1 I : 20<br />
current Thread :Thread-1 I : 30<br />
current Thread :Thread-1 I : 40<br />
稍做修改程序：<br />
<img src="http://images.csdn.net/upimgs/liyp/boke0.png" alt="" /><br />
结果为：<br />
current Thread :Thread-0 I : 0<br />
current Thread :Thread-1 I : 0<br />
current Thread :Thread-0 I : 10<br />
current Thread :Thread-1 I : 10<br />
current Thread :Thread-0 I : 20<br />
current Thread :Thread-1 I : 20<br />
current Thread :Thread-0 I : 30<br />
current Thread :Thread-1 I : 30<br />
current Thread :Thread-1 I : 40<br />
current Thread :Thread-0 I : 40<br />
从本例子，可以清晰的理解run（），start（）方法本质了。哈哈。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2010/09/15/start-run/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

