synchronized修饰静态方法和普通方法有什么区别
来源:互联网 发布:mac qq音乐退出登录 编辑:程序博客网 时间:2024/04/29 08:18
在Java中,synchronized是用来表示同步的,我们可以synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。
在static方法前加synchronizedstatic:静态方法属于类方法,它属于这个类,获取到的锁,是属于类的锁。
在普通方法前加synchronizedstatic:非static方法获取到的锁,是属于当前对象的锁。
结论:类锁和对象锁不同,他们之间不会产生互斥。
看一个Demo:
public class SynchoronizedDemo { //synchronized修饰非静态方法 public synchronized void function() throws InterruptedException { for (int i = 0; i <3; i++) { Thread.sleep(1000); System.out.println("function running..."); } } //synchronized修饰静态方法 public static synchronized void staticFunction() throws InterruptedException { for (int i = 0; i < 3; i++) { Thread.sleep(1000); System.out.println("Static function running..."); } } public static void main(String[] args) { final SynchoronizedDemo demo = new SynchoronizedDemo(); Thread t1 = new Thread(new Runnable() { @Override public void run() { try { staticFunction(); } catch (InterruptedException e) { e.printStackTrace(); } } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { try { demo.function(); } catch (InterruptedException e) { e.printStackTrace(); } } }); t1.start(); t2.start(); }}
运行结果:
Static function running...
function running...
function running...
Static function running...
Static function running...
function running...
阅读全文
0 0
- synchronized修饰静态方法和普通方法有什么区别
- Java Synchronized修饰静态方法普通方法和代码块
- synchronized修饰普通方法,修饰静态方法比较
- python 普通方法、静态方法和类方法有什么区别?
- synchronized用于静态方法和普通方法区别
- java synchronized修饰普通方法,修饰静态方法,修饰代码块,修饰线程run方法 比较
- synchronized 修饰不同方法有何区别?
- synchronized 修饰不同方法有何区别?
- 构造方法和普通方法有什么区别
- 【java】synchronized修饰静态方法和非静态方法的区别
- synchronized修饰静态方法和非静态方法的总结
- Python的静态方法和类方法有什么区别
- 构造方法和普通方法有什么区别呢,我很疑惑?
- java静态方法与非静态方法有什么区别?
- Java中一个类里面有两个用synchronized修饰的非静态方法,不同的线程中的实例访问这两个方法时会发生什么?
- 在JAVA中, 静态方法和一般方法有什么区别?
- java中synchronized修饰的方法或代码块和static synchronized修饰方法或代码块的区别
- java synchronized修饰方法和修饰方法块
- 【bzoj4826】影魔(线段树+单调栈+扫描线)
- 用g++编译生成动态连接库*.so的方法及连接
- Intent.ACTION_GET_CONTENT和Intent.ACTION_PICK的使用区别
- hadoop配置启动historyserver
- InnoDB中Cardinality介绍
- synchronized修饰静态方法和普通方法有什么区别
- SLC、MLC和TLC三者的区别
- IntelliJ 错误 Error:java: javacTask: source release 1.8 requires target release 1.8 解决
- CSS优先级与!important
- 我的程序员之路
- struts2_ognl表达式符号的使用方法
- 多重样式优先级深入概念
- 总结
- wampserver出错处理