Duvida na criação de classe Helper

Desejo criar uma classe Helper contendo alguns métodos que serão usados em varias classes.

public final class Helper {

    public static boolean funcao01() {
        return false;
    }

    public static boolean funcao02() {
        return false;
    }
}

E estou fazendo a chamada destes métodos em outras classes da seguinte forma:
Helper.funcao01();

Até ai tudo ok, mas quando executo em multi-thread não funciona.

Quando faço da seguinte forma:

public final class Helper {

    public boolean funcao01() {
        return false;
    }

    public boolean funcao02() {
        return false;
    }
}

E na minha classe principal crio uma instancia estática do helper, não vi problemas ate então com o Helper.

public static Helper helper=new Helper();

Há algum problema com essa segunda abordagem em multi-threads?

Você disse que usando métodos estáticos nao funciona em multi-thread. O que isso quer dizer? Você obtém exceptions? Resultados errados?

Ambas abordagens podem causar problemas dependendo do que a funçao faz. Na sua versao de funçao simplificada, nenhuma das duas abordagens causaria problema.

Se sua funçao usa algum estado da classe, ou modifica alguma coisa, provavelmente é mais fácil que você retire todos os statics desse código que apresentou.

Se sua funçao nao modifica nada, e só calcula o resultado baseada nos parâmetros que recebe, entao pode deixar suas funçoes como estáticas e descobrir que erro é esse que tá acontecendo.

1 curtida