多线程的安全问题:
在java中当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完。
另一个线程参与进来执行,导致共享数据的错误。
怎么解决!!!
用synchronized 来控制线程的并发,是多线程中的数据是安全。
你可以参照下面的例子先看看。有问题给我发站内信。
[url]http://love-love-l.blog.163.com/blog/static/21078304201001804211901/[/url]
简单说一下吧:synchronized用来修饰方法,只有在当前线程获得对象锁后,才能使用该方法,用来修饰方法块,一样也需要获得对像锁才能执行被synchronized 包围的
代码块。
例如:
[code="java"]
public void synchronized doSomething() {
}
[/code]
需要获得对象锁才能够执行上面的方法。
[code="java"]
Object lock = new Object();
public void doSomething() {
//do something
synchronized(lock ) {
//do something 在这里控制并发。
}
//do something
}
[/code]
[code="java"]
同步你操作语句的方法啊
用synchronized
[/code]
java中的多线程问题是一个很棘手的问题.
可以用加锁的方式,同步数据操作.当然会影响效率.也可以用副本的方式做几个数据的副本使不同的线程操作不同的副本,这样就不会造成多线程共享数据出错的问题了.但这种方法还要考虑最后数据的合并.