`
standalone
  • 浏览: 615047 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

static synchronized methods?

    博客分类:
  • java
 
阅读更多

Keep in mind that using synchronized on methods is really just shorthand (assume class is SomeClass):

synchronized static void foo() {
    ...
}

is the same as

static void foo() {
    synchronized(SomeClass.class) {
        ...
    }
}

and

synchronized void foo() {
    ...
}

is the same as

void foo() {
    synchronized(this) {
        ...
    }
}

You can use any object as the lock. If you want to lock subsets of static methods, you can

class SomeClass {
    private static final Object LOCK_1 = new Object();
    private static final Object LOCK_2 = new Object();
    static void foo() {
        synchronized(LOCK_1) {...}
    }
    static void fee() {
        synchronized(LOCK_1) {...}
    }
    static void fie() {
        synchronized(LOCK_2) {...}
    }
    static void fo() {
        synchronized(LOCK_2) {...}
    }
}

(for non-static methods, you would want to make the locks be non-static fields)

 

分享到:
评论

相关推荐

    浅析java并发中的Synchronized关键词

    Synchronized Static Methods Synchronized关键词也可以用在静态方法前面。例如: public static synchronized void syncStaticCalculate() { staticSum = staticSum + 1; } Synchronized关键词放在静态方法前面...

    commons-httpclient-3.0.1--java网络开发

    private static final Log LOG; private HttpConnectionManager httpConnectionManager; private HttpState state; private HttpClientParams params; private HostConfiguration hostConfiguration; // ...

    java基础名词解释汇总.docx

    Synchronized methods是同步方法,是指明某个方法在某个时刻只能由一个线程访问。Thread是线程,是一个程序内部的顺序控制流。Time-slicing是时间片,调度安排线程执行的一种方案。 在Java基础名词解释汇总中,...

    java英文笔试

    an abstract class can have both abstract and non-abstract (concrete) methods, whereas an interface can only have abstract methods (since Java 8, interfaces can also have default and static methods)....

    java考题汇总java考题汇总.doc

    8. 线程(Thread)和同步方法(Synchronized methods):线程是程序执行的最小单元,同步方法用于多线程编程中,确保同一时刻只有一个线程可以执行特定方法,防止数据竞争问题。 9. 构造函数(Constructor):构造...

    阿里巴巴java开发规约插件+java开发手册(终极版)

    5. **并发控制**:在多线程环境下,合理使用`synchronized`、`volatile`、`Lock`等机制保证数据同步。避免无用的同步块和过度的锁粒度,以减少性能开销。 6. **日志记录**:合理使用日志框架,如Log4j或SLF4J,明确...

    java 单例模式的实例详解

    public static synchronized Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } // Other methods... } ``` 这样,我们可以确保...

    java考题汇总

    10. **同步方法(Synchronized methods)** - 同步方法确保同一时间只有一个线程能够访问,用于解决多线程并发问题。 11. **构造函数(Constructor)** - 构造函数用于初始化对象,在创建对象时自动调用。 12. **...

    java 面试题 总结

    换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session ...

    java考试题考试题

    同步方法 (Synchronized Methods) 同步方法是使用`synchronized`关键字修饰的方法,可以确保在同一时间只有一个线程能够执行该方法。这有助于解决多线程环境下的并发问题。 ### 16. 线程 (Thread) 线程是程序...

    超级有影响力霸气的Java面试题大全文档

    换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session ...

    java生产者-消费者

    本示例中的代码实现了基本的功能,并展示了如何使用 `synchronized`、`wait()` 和 `notifyAll()` 等关键字来确保线程的安全性和协同工作能力。对于更复杂的场景,还可以进一步扩展这些类的功能,比如增加错误处理...

    java反射机制详解

    public static void main(String args[]) throws Exception { // 加载并初始化命令行参数指定的类 Class classType = Class.forName(args[0]); // 获得类的所有方法 Method methods[] = classType....

    java名词速查表 java名词速查表

    #### Synchronized methods (同步方法) - 同步方法是为了保证线程安全而加锁的方法。 - **作用**:确保同一时间只有一个线程可以访问。 #### Thread (线程) - 线程是程序中的最小执行单元。 - **作用**:实现多...

    java中的类反射机制

    public static void main(String[] args) { try { Class<?> c = Class.forName(args[0]); Method[] methods = c.getDeclaredMethods(); for (Method method : methods) { System.out.println(method.toString...

    java实验报告(免费下载)

    - 静态代码块(static{})在类加载时执行一次。 - 构造代码块(非静态代码块)在创建对象时执行,每个实例化过程都会执行一次。 - 局部代码块(方法内的代码块)在进入该代码块时执行。 - 构造方法用于初始化新...

    个人java学习笔记.doc

    方法的修饰符包括public、protected、default和private,以及static、final、abstract、native和synchronized。final方法不可被覆盖,abstract方法没有方法体,必须在抽象类中声明。native方法是用C或C++实现的,...

    软件编程词汇表(一些编程词汇的解释)

    在Java中,常用的修饰符包括`public`、`protected`、`private`、`static`、`final`等。 #### 52. 本地方法 (Native Methods) 本地方法是指在Java中声明但在其他语言(如C或C++)中实现的方法。本地方法使用`native`...

    达内Java笔记 各种总结

    Java 8引入了默认方法(Default Methods)和静态方法(Static Methods)到接口中,增强了接口的功能。 【异常和内部类】 Java中的异常处理是通过try-catch-finally语句块来实现的,异常是一种特殊的对象,用于表示...

    Learn Java File By Hello World Example

    - 方法的访问标志:描述方法的访问权限和特性,如static、synchronized等。 - 方法名索引和描述符索引:指向常量池中记录的方法名和方法签名。 - 方法的属性信息:包含如方法参数、局部变量和异常信息等。 - ...

Global site tag (gtag.js) - Google Analytics