Как Вы уничтожаете Поток в Java?

Мне удалось решить эту проблему, используя auth0-java-jwt

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import lombok.SneakyThrows;

import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.interfaces.ECPrivateKey;
import java.util.Date;


    KeyStore store = KeyStore.getInstance("PKCS12");
    //
    store.load(new FileInputStream("/home/andrew/keystore.p12"), "test".toCharArray());
    ECPrivateKey pk = (ECPrivateKey) store.getKey("selfsigned", "test".toCharArray());

    Algorithm algorithmHS = Algorithm.ECDSA256(null, pk);
    String token = JWT.create()
        .withSubject("")
        .withExpiresAt(new Date())
        .withNotBefore(new Date())
        .withIssuer("issuer")
        .withClaim("roles", "b")
        .withClaim("keys", "b")
        .sign(algorithmHS);

364
задан Michael 8 May 2018 в 01:51
поделиться

3 ответа

Посмотрите этот поток Sun на том, почему они удержали от использования Thread.stop() . Это вдается в подробности о том, почему это было плохим методом и что должно быть сделано для безопасной остановки потоков в целом.

способ, которым они рекомендуют, состоит в том, чтобы использовать совместно используемую переменную в качестве флага, который просит, чтобы фоновый поток остановился. Эта переменная может тогда быть установлена другим объектом, запрашивающим оконечный поток.

186
ответ дан Ravi 23 November 2019 в 00:10
поделиться

Один путь путем установки переменной класса и использования ее в качестве сигнальной метки.

Class Outer {
    public static volatile flag = true;

    Outer() {
        new Test().start();
    }
    class Test extends Thread {

        public void run() {
            while (Outer.flag) {
                //do stuff here
            }
        }
    }

}

Набор внешняя переменная класса, т.е. флаг = верный в вышеупомянутом примере. Установите его на ложь для 'уничтожения' потока.

20
ответ дан Nikhil Agrawal 23 November 2019 в 00:10
поделиться

Обычно Вы не делаете..

Вы просите, чтобы это прервало независимо от того, что это делает использование Thread.interrupt () (javadoc ссылка)

А хорошее объяснение того, почему находится в javadoc здесь (Java technote ссылка)

127
ответ дан Fredrik 23 November 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: