动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Eclipse Form程序设计快速入门.
.多线程学习初步.
.一个完整的Socket例子.
.端口扫描程序java实现.
.(介绍)WebLogic Platform 8.1崭.
.Sunil Patil 告诉你如何扩展Stru.
.JAVA入门教程:数组.
.Java企业应用开发实践TOP10.
.表现层框架之争 JSF与Struts的异.
.Java的网络编程:用Java实现Web服.
.struts构建文件上传(9).
.截取指定长度的字符串.
.程序员应用EJB 3.0必要的准备.
.Files 属性.
.RSS 2.0 Specification.
.Java RMI and .NET Remoting.
.一个软件测试工程师的加班经历.
.分析如何用 Eclipse 进行 XML 开.
.JAVA 多进程应用 多个定时器作业.
.GEF-SDK-3.0.1.

编写高效的线程安全类

发表日期:2008-1-5 |


Java 编程语言为编写多线程应用程序提供强大的语言支持。但是,编写有用的、没有错误的多线程程序仍然比较困难。本文试图概述几种方法,程序员可用这几种方法来创建高效的线程安全类。

并发性

只有当要解决的问题需要一定程度的并发性时,程序员才会从多线程应用程序中受益。例如,假如打印队列应用程序仅支持一台打印机和一台客户机,则不应该将它编写为多线程的。一般说来,包含并发性的编码问题通常都包含一些可以并发执行的操作,同时也包含一些不可并发执行的操作。例如,为多个客户机和一个打印机提供服务的打印队列可以支持对打印的并发请求,但向打印机的输出必须是串行形式的。多线程实现还可以改善交互式应用程序的响应时间。

Synchronized 要害字

虽然多线程应用程序中的大多数操作都可以并行进行,但也有某些操作(如更新全局标志或处理共享文件)不能并行进行。在这些情况下,必须获得一个锁来防止其他线程在执行此操作的线程完成之前访问同一个方法。在 Java 程序中,这个锁是通过 synchronized 要害字提供的。清单 1 说明了它的用法。

清单 1. 使用 synchronized 要害字来获取锁

public class MaxScore {
    int max;
    public MaxScore() {
        max = 0;
    }

    public synchronized void currentScore(int s) {
        if(s> max) {
            max = s;
        }
    }

    public int max() {
        return max;
    }
}

这里,两个线程不能同时调用 currentScore() 方法;当一个线程工作时,另一个线程必须阻塞。但是,可以有任意数量的线程同时通过 max() 方法访问最大值,因为 max() 不是同步方法,因此它与锁定无关。

试考虑在 MaxScore 类中添加另一个方法的影响,该方法的实现如清单 2 所示。

清单 2. 添加另一个方法

public synchronized void reset() {
        max = 0;
    }

这个方法(当被访问时)不仅将阻塞 reset() 方法的其他调用,而且也将阻塞 MaxScore 类的同一个实例中的 currentScore() 方法,因为这两个方法都访问同一个锁。假如两个方法必须不彼此阻塞,则程序员必须在更低的级别使用同步。清单 3 是另一种情况,其中两个同步的方法可能需要彼此独立。

清单 3. 两个独立的同步方法

import java.util.*;

public class Jury {
    Vector members;
    Vector alternates;

    public Jury() {
        members = new Vector(12, 1);
        alternates = new Vector(12, 1);
    }

    public synchronized void addMember(String name) {
        members.add(name);
    }

    public synchronized void addAlt(String name) {
        alternates.add(name);
    }

    public synchronized Vector all() {
        Vector retval = new Vector(members);
        retval.addAll(alternates);
        return retval;
    }
}


上一篇:深入探讨Iterator模式 人气:346
下一篇:Struts终结者?对比组件框架技术tapestry 人气:682
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-19 久溜溜电影系统(免维护+小偷) v5
2008-8-19 晴天免费电影系统完整版(带迅雷采
2008-8-19 Twinklous File Manager v1.5
2008-8-19 千米旅游网站管理系统 v2.0
2008-8-19 资阳人才网 v2.0
2008-8-19 全球商务B2B网站系统 v1.0 asp版
2008-8-19 动域网主机代理管理系统 v1.0
2008-8-19 JH2008-企业网站(全站生成html)
2008-8-19 GlobalEC C2C管理系统 v1.0
2008-8-16 iLaba Player(小喇叭播放器) v2.
2008-8-16 DoubleClickFix 鼠标双击修正工具
2008-8-16 CrystalCPUID 4.15.2.451
2008-8-16 VeryCD 电驴(easyMule) 1.0.4 Bu
2008-8-16 uTorrent 1.8 Build 11813 - Sta
2008-8-16 比特精灵(BitSpirit) v3.3.2.287
2008-8-16 StayInTune音叉 v1.0 破解版
2008-8-16 iChing《周易》汉化补丁 v1.0
2008-8-16 Starmap星空图v1.0汉化破解版
  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵