Java
- 10 ответов
- 0 вопросов
6
Вклад в тег
str1.intern() == str2.intern()
public static void main(String[] args) {
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
Thread.getAllStackTraces().keySet().stream()
//Не стоит останавливать поток в котором отрабатывает хук, а тем более пытаться заджойниться
.filter(thread -> !thread.equals(Thread.currentThread()))
//Демоны предполагают безопасное завершение в любой момент, останавливать их не нужно
.filter(thread -> !thread.isDaemon())
//Устанавливаем флаг "interrupt" для всех остальных
.peek(Thread::interrupt)
.peek(thread -> System.out.println(thread.getClass()))
.forEach(thread -> {
try {
thread.join(); //Ждем завершения всех потоков, которым установлен флаг "interrupt"
} catch (InterruptedException e) {
// ...
}
});
}));
while (true) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
System.out.println("Thread was interrupted once");
//После перехвата исключения флаг "interrupt" возвращается в исходное состояние, поэтому его нужно установить снова
Thread.currentThread().interrupt();
break;
}
}
while (true) {
try {
Thread.sleep(100); // Мы бы зависли здесь, если бы не установили флаг "interrupt" повторно
} catch (InterruptedException e) {
System.out.println("Thread was interrupted");
Thread.currentThread().interrupt();
break;
}
}
while (!Thread.currentThread().isInterrupted()) {
doSomeUninterruptableWork();
}
}
private double [] vektor;
public Main() {
double [] vektor = {2, 3.5, -5};
}
public Main plus (Main vektor){
double [] a = {2, 3.5, -5};
double [] b = {2, 3.5, -5};
double [] r = new double [a.length+b.length];
System.arraycopy(a, 0, r, 0, a.length);
System.arraycopy(b, 0, r, a.length, b.length);
return r;
}
public Main plus (Main vektor)
public double[] plus (Main vektor)
public Main(double [] vektor) {
this.vektor = vektor;
}