﻿<?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/onedaylover/category/29904.html</link><description>实践启示</description><language>zh-cn</language><lastBuildDate>Wed, 05 Mar 2008 09:51:07 GMT</lastBuildDate><pubDate>Wed, 05 Mar 2008 09:51:07 GMT</pubDate><ttl>60</ttl><item><title>一开始就将一个类设计成是线程安全的，比在后期重新修复它更容易</title><link>http://www.blogjava.net/onedaylover/archive/2008/03/05/184016.html</link><dc:creator>如果有一天de</dc:creator><author>如果有一天de</author><pubDate>Wed, 05 Mar 2008 07:50:00 GMT</pubDate><guid>http://www.blogjava.net/onedaylover/archive/2008/03/05/184016.html</guid><wfw:comment>http://www.blogjava.net/onedaylover/comments/184016.html</wfw:comment><comments>http://www.blogjava.net/onedaylover/archive/2008/03/05/184016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/onedaylover/comments/commentRss/184016.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/onedaylover/services/trackbacks/184016.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 最近在修改组里的TMonitor程序头疼坏了，程序的好多类在设计之初没有考虑线程安全性，现在在源程序上加功能，怎一个痛苦了的。。。<br />
&nbsp;&nbsp;&nbsp; 杨哥（我刚到公司时接手他的程序）是个大牛，他在地图的方面开始设计的很好，但是都是静态数据，没有数据的动态变化的麻烦，然而后来在<br />
JMapEdit上实现模拟动态飞行以及动态监控上实现起来是个头疼的问题，可能会多个线程访问共享变量，而且有线程对共享变量的write操作，在程序中尽量调整原接口以及实现方式。杨哥走了，目前在组里只有我一个人了解地图类编程，昨天跟方sir商量新来的同事是否也能接触我的程序，方sir的回答：TMonitor还是比较难的，估计新来的同事（是个女的）不成，下次招个男的让他接。。。不爽中，俺还是希望带个女滴。。。<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; PS：经验总结。<br />
&nbsp;&nbsp;&nbsp; 在没有正确同步的情况下，如果多线程访问同一个变量，你的程序就存在隐患。有3种方法修复它：<br />
<ul>
    <li>不要多线程共享变量</li>
    <li>使状态变量为不可变的；或者</li>
    <li>在任何访问状态变量的时候使用同步</li>
</ul>
&nbsp;&nbsp;&nbsp; 设计线程安全的类时，使用<span style="color: rgb(80, 223, 255);"><span style="color: rgb(137, 120, 255);"><span style="color: rgb(80, 223, 255);"><span style="color: rgb(137, 120, 255);"><span style="color: rgb(80, 223, 255);"><span style="color: rgb(137, 120, 255);"><span style="color: rgb(80, 223, 255);"><span style="color: rgb(137, 120, 255);">封装</span></span></span></span></span></span></span></span>、不可变性以及明确的不便约束等面向对象技术可以使你在解决同步方面的问题时思路清晰<br />
<img src ="http://www.blogjava.net/onedaylover/aggbug/184016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/onedaylover/" target="_blank">如果有一天de</a> 2008-03-05 15:50 <a href="http://www.blogjava.net/onedaylover/archive/2008/03/05/184016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>