Java synchronized 非静态方法 静态方法的区别
2016-09-13 17:04
363 查看
package yi.test01; /** * @author yangwl * * * synchronized作用于静态方法和非静态方法的区别: * 非静态方法: * 给对象加锁(可以理解为给这个对象的内存上锁,注意 只是这块内存,其他同类对象都会有各自的内存锁),这时候 * 在其他一个以上线程中执行该对象的这个同步方法(注意:是该对象)就会产生互斥 * 静态方法: * 相当于在类上加锁(*.class 位于代码区,静态方法位于静态区域,这个类产生的对象公用这个静态方法,所以这块 * 内存,N个对象来竞争), 这时候,只要是这个类产生的对象,在调用这个静态方法时都会产生互斥 */ public class Test01 implements Runnable { private String name; private Test01(String name) { this.name = name; } public synchronized void run() { // System.out.println(name + " -> Start."); // for(int i = 0; i < 20; i++) { // System.out.println(name + "'s i=" + (i+1)); // } // System.out.println(name + "X -> End."); show(); } public synchronized static void show() { for(int i = 0; i < 20; i++) { System.out.println("static 's j=" + (i+1)); } } public static void main(String[] args) { Test01 t1 = new Test01("A"); Thread thread1 = new Thread(t1); Thread thread2 = new Thread(t1); thread1.start(); thread2.start(); } }
相关文章推荐
- java synchronized同步静态方法和同步非静态方法的区别与举例
- java synchronized同步静态方法和同步非静态方法的区别与举例
- java synchronized:(实例方法同步、静态方法同步)区别
- Java中普通方法与静态方法static区别
- JAVA静态代码块执行过程 以及和构造方法的区别
- java 静态方法和实例方法的区别
- java 静态方法和实例方法的区别及总结
- Java的synchronized加在方法上或者对象上有什么区别?
- java 静态方法和实例方法的区别
- Java系列之:看似简单的问题 静态方法和实例化方法的区别
- java synchronized静态同步方法与非静态同步方法,同步语句块
- java 静态方法和实例方法的区别
- java synchronized静态同步方法与非静态同步方法,同步语句块
- java 静态方法和实例方法的区别
- java 静态方法和实例方法的区别
- Java 中的静态方法和飞静态方法的主要区别
- Java静态代码块和静态方法的区别/类加载顺序
- java 静态方法和实例方法的区别
- 静态和实例方法区别-java
- java--构造方法,构造代码块,静态代码块区别及代码示例