要想解决“脏数据”的问题,最简单的方法就是使用synchronized关键字来使run方法同步,代码如下:
public synchronized void run()
{
![]()
}
从上面的代码可以看出,只要在void和public之间加上synchronized关键字,就可以使run方法同步,也就是说,对于同一个Java类的对象实例,run方法同时只能被一个线程调用,并当前的run执行完后,才能被其他的线程调用。即使当前线程执行到了run方法中的yield方法,也只是暂停了一下。由于其他线程无法执行run方法,因此,最终还是会由当前的线程来继续执行。先看看下面的代码:
sychronized关键字只和一个对象实例绑定
class Test
{
public synchronized void method()
{
![]()
}
}
public class Sync implements Runnable
{
private Test test;
public void run()
{
test.method();
}
public Sync(Test test)
{
this.test = test;
}
public static void main(String[] args) throws Exception
{
Test test1 = new Test();
Test test2 = new Test();
Sync sync1 = new Sync(test1);
Sync sync2 = new Sync(test2);
new Thread(sync1).start();
new Thread(sync2).start();
}
}
评论加载中...- 2009-3-28java教程:关于对类的解释
- 2009-3-28Java游戏开发中应始终坚持的10项基本原则
- 2009-3-28BeanUtil使用例子:解析并转化HttpServletRequest到Bean的全面测试
- 2009-3-28基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发 (3)
- 2009-3-28关于for里面使用变量对性能的影响
- 2009-3-26利用apache的FileUpload组件实现文件上传
- 2009-3-26java 正则表达式匹配斜杠
- 2009-3-26JAVA编程:方法调用传对象参数
- 2009-3-26基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发 (2)
- 2009-3-26恶战怪异文件名下载
