我注意到普通用户可以在没有 sudo 的情况下更改自己的密码。但据我所知,更改密码必须编写只能由 root 访问的 /etc/shadow 文件。
怎么会这样??
正如标题所示,我有一些代码包含在一个while(true)无限循环中,并且所有代码都被完全捕获try并catch阻塞.这个线程是在main方法中启动的,但是,经过长时间运行,当我使用jstack检查并导致工作累积时,这个工作线程会神秘地消失.
以下是我的代码:
public void run() {
while (true) {
try {
// Consumer consumes from Kafka server
Global.KAFKA_METRIC_DATA_CONSUMER.consume(topic, handler);
} catch (Exception e) {
logger.error("Kafka consumer process was interrupted by exception!");
} finally {
try {
// Prevent restart too often
Thread.sleep(30 * BaseConst.SECOND);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这个结构将保持线程运行,因此是消费者.即使consume()方法失败,它也会无限重启.但是,正如我上面提到的,整个线程无声地消失,没有任何错误日志.有人能提供一些线索吗?
一些可能有用的信息:
java multithreading jvm memory-management kafka-consumer-api