【java performance】不要在循环中调用synchronized(同步)方法
2014-02-21 16:11
218 查看
方法的同步需要消耗相当大的资料,在一个循环中调用它绝对不是一个好主意。
例子:
import java.util.Vector;
public class SYN {
public synchronized void method (Object o) {
}
private void test () {
for (int i = 0; i < vector.size(); i++) {
method (vector.elementAt(i)); // violation
}
}
private Vector vector = new Vector (5, 5);
}
更正:
不要在循环体中调用同步方法,如果必须同步的话,推荐以下方式:
import java.util.Vector;
public class SYN {
public void method (Object o) {
}
private void test () {
synchronized{//在一个同步块中执行非同步方法
for (int i = 0; i < vector.size(); i++) {
method(vector.elementAt(i));
}
}
}
private Vector vector = new Vector (5, 5);
}
例子:
import java.util.Vector;
public class SYN {
public synchronized void method (Object o) {
}
private void test () {
for (int i = 0; i < vector.size(); i++) {
method (vector.elementAt(i)); // violation
}
}
private Vector vector = new Vector (5, 5);
}
更正:
不要在循环体中调用同步方法,如果必须同步的话,推荐以下方式:
import java.util.Vector;
public class SYN {
public void method (Object o) {
}
private void test () {
synchronized{//在一个同步块中执行非同步方法
for (int i = 0; i < vector.size(); i++) {
method(vector.elementAt(i));
}
}
}
private Vector vector = new Vector (5, 5);
}
相关文章推荐
- java synchronized同步方法调用另一个同步方法,锁机制问题
- java synchronized同步静态方法和同步非静态方法的异同
- Java使用synchronized修饰方法来同步线程的实例演示
- 浅谈Java多线程同步机制之同步块(方法)——synchronized
- Java中的synchronized同步代码块和同步方法的区别
- 【Java面试题】26 多线程有几种实现方法?同步有几种实现方法? 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
- 循环执行AJAX程序---将jquery 中的ajax方法设为同步调用
- Java进程与多线程+线程中的join、yield、wait等方法+synchronized同步锁使用
- 九、初学Java多线程:使用Synchronized关键字同步类方法
- Java:多线程,线程同步,synchronized关键字的用法(同步代码块、非静态同步方法、静态同步方法)
- Java多线程初学者指南(10):使用Synchronized关键字同步类方法
- java synchronized静态同步方法与非静态同步方法,同步语句块
- java synchronized对象锁与类锁的区别、同步代码块与同步方法的区别
- Java进程与多线程+线程中的join、yield、wait等方法+synchronized同步锁使用
- java 为什么wait(),notify(),notifyAll()必须在同步方法/代码块中调用?
- 初学Java多线程:使用Synchronized关键字同步类方法
- 不得不知道的Java内存溢出之在经常调用的方法内不要new大对象
- 永远不要在循环之外调用wait方法
- java synchronized静态同步方法与非静态同步方法,同步语句块
- 四、java多线程核心技术——synchronized同步方法与synchronized同步快