Java中静态方法和非静态方法的选择

Java中静态方法和非静态方法的选择

静态方法

  1. 当该方法不需要依赖具体实例,且使用频率较高时候,优先考虑静态方法
  2. 常见的工具类适合定义成静态方法;
  3. 静态方法属于类所有,随着类的加载而加载于栈内存中,调用方式可以是“类名.方法”的形式调用,随用随拿,效率较高
  4. 静态方法的缺点是不自动销毁,而实例化的可以进行销毁。

非静态方法

  1. 当该方法访问到了实例变量,需要创建对象来调用该方法的时候,使用非静态方法;
  2. 使用频率较少,随着对象的特征改变而变,则定义为非静态方法,减少内存消耗;
  3. 当一个方法被频繁调用而创建对象的时候,由于每创建一个对象,在堆内存中就会占用一块内存,故非静态方法不适合用于频繁被调用的方法中,避免消耗堆内存空间。

Java static静态方法,是线程安全的吗?

静态方法内的临时变量是每个线程都有一份的,因而是安全的.

那么,在多线程中使用静态方法是否有线程安全问题?这要看静态方法是否引起线程安全,要看在静态方法中是否使用了静态字段。

因为,在多线程中使用同一个静态方法时,每个线程都共享一个静态字段(static field)。所以说,如果该静态方法不去操作一个静态字段,只在方法内部使用实例字段(instance field),不会引起安全性问题。但是,如果该静态方法操作了一个静态字段,则有可能会引起线程安全问题.

你可能感兴趣的:(JAVA,java,静态方法,非静态方法)