互斥变量 java_初步认识JAVA(四)-互斥

时间还过的真快呀,转眼就过了一年了。接触JAVA也快二年了,当初写BLOG的初衷也忘记了。今天突然想起,写下一篇吧。

多线程是服务端程序用的最多的技术,为了让多线程有序的访问共同资源,就必须在访问先查询资源是否可以访问,因此就产生了互斥。JAVA的互斥使用synchronized关键字来实现的,在使用上有二种方法,下面给出例子。

1.声明变量或函数在同一对象内可进行互斥

class TestClass

{

public byte[] m_Test = new byte[1];

public synchronized void Test()

{

//函数中的代码在互斥效果内

}

public void Test1()

{

synchronized(m_Test)

{

//段中的代码在互斥效果内

}

}

}

TestClass t = new TestClass();

所有的线程在使用t对象时,对t内的synchronized(m_Test)块和Test函数访问产生互斥作用。

2.声明变量或函数在同一个进程内可进行互斥

class TestClass

{

public static byte[] m_Test = new byte[1];

public static synchronized void Test()

{

//函数中的代码在互斥效果内

}

public void Test1()

{

synchronized(m_Test)

{

//段中的代码在互斥效果内

}

}

}

TestClass t = new TestClass();

TestClass t1 = new TestClass();

所有的线程在使用t和t1对象时,对synchronized(m_Test)块和Test函数访问均产生互斥作用,同时只存在一个线程访问。

仔细看一下,方法2比方法1,就是在声明的时候将变量或函数声明成静态的,除此以外并无差别。但是功能却天差地远。

posted on 2007-07-10 01:04 jacky的无聊空间 阅读(769) 评论(1)  编辑 收藏 引用 所属分类: JAVA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值