<?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>中文Flex例子 &#187; 同步访问</title>
	<atom:link href="http://blog.minidx.com/tag/%e5%90%8c%e6%ad%a5%e8%ae%bf%e9%97%ae/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.minidx.com</link>
	<description>中文Adobe Flex例子,Flex实例教程,RIA资源,全文检索技术,算法和数据结构</description>
	<lastBuildDate>Thu, 31 Mar 2011 03:22:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>关于java中的synchronized关键字的理解</title>
		<link>http://blog.minidx.com/2007/10/12/11.html</link>
		<comments>http://blog.minidx.com/2007/10/12/11.html#comments</comments>
		<pubDate>Fri, 12 Oct 2007 12:32:22 +0000</pubDate>
		<dc:creator>Minidxer</dc:creator>
				<category><![CDATA[程序开发相关]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[synchronized]]></category>
		<category><![CDATA[作用域]]></category>
		<category><![CDATA[共享资源]]></category>
		<category><![CDATA[同步]]></category>
		<category><![CDATA[同步访问]]></category>
		<category><![CDATA[对象]]></category>
		<category><![CDATA[死锁]]></category>
		<category><![CDATA[线程]]></category>
		<category><![CDATA[继承]]></category>
		<category><![CDATA[锁（lock）]]></category>

		<guid isPermaLink="false">http://minidx.com/blog/?p=11</guid>
		<description><![CDATA[搞清楚synchronized锁定的是哪个对象，就能帮助我们设计更安全的多线程程序








●首先是synchronized关键字的作用域可以有两种:
・某个对象实例内
synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法（如果一个对象有多个synchronized方法，只要一个线 程访问了其中的一个synchronized方法，其它线程不能同时访问这个对象中任何一个synchronized方法）
・某个类的范围
synchronized static aStaticMethod{}防止多个线程同时访问这个类中的synchronized static 方法
●synchronized关键字是不能继承的
●要注意的事项
・无论synchronized关键字加在方法上还是对象上，它取得的锁都是对象，而不是把一段代码或函数当作锁――而且同步方法很可能还会被其他线程的对象访问
・每个对象只有一个锁（lock）与之相关联
・实现同步是要很大的系统开销作为代价的，甚至可能造成死锁，所以尽量避免无谓的同步控制
●对共享资源的同步访问更加安全的技巧
・定义private 的instance变量+它的 get方法，而不要定义public/protected的instance变量。如果将变量定义为public，对象在外界可以绕过同步方法的控制而直接取得它，并改动它。
・如果instance变量是一个对象，如数组或ArrayList什么的，那上述方法仍然不安全，因为当外界对象通过get方法拿到这个instance对象的引用后，又将其指向另一个对象，那么这个private变量也就变了，岂不是很危险。 这个时候就需要将get方法也加上synchronized同步，并且，只返回这个private对象的clone()――这样，调用端得到的就是对象副本的引用了。
你可能还对下列文章感兴趣:关于Java中setReference，getReference的用法的说明如何在Flex项目中手动配置BlazeDS的教程一个非常好用的Java读写INI配置文件的类利用xSocket, Java和Flash CS3创建一个多用户聊天室的教程（附源代码）借助xSocket 5分钟内用Java编写一个Flash socket server的教程]]></description>
		<wfw:commentRss>http://blog.minidx.com/2007/10/12/11.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 3/7 queries in 0.042 seconds using disk
Object Caching 171/329 objects using disk

Served from: blog.minidx.com @ 2012-02-10 03:27:24 -->
