我是Java/threads的新手,我继承了类似下面的代码.它是一个命令行程序,main()只启动5-6种不同类型的线程,并以^ C退出.我想添加一个关闭钩子来正确关闭所有线程并按以下方式调整它.
我在所有线程中添加了一个Shutdown钩子和一个stopThread()方法(比如MyWorker类中的那个)
问题是,当我按^ CI时,看不到Thread的run方法中的结束消息.这是在后台完成还是我的方法有问题.另外,我应该遵循更好的模式吗?
谢谢
public class Main {
public static MyWorker worker1 = new MyWorker();
// .. various other threads here
public static void startThreads() {
worker1.start();
// .. start other threads
}
public static void stopThreads() {
worker1.stopThread();
// .. stop other threads
}
public static void main(String[] args)
throws Exception {
startThreads();
// TODO this needs more work (later)
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
try {
stopThreads();
} catch (Exception exp) {
} …Run Code Online (Sandbox Code Playgroud) 我使用hg-fast-export工具将一些mercurial repos转换为git,虽然所有这些都转换得很好,但是当我按下repo时会产生以下错误.
$ git remote add origin git@github.com:asdf/zxcv.git
$ git push -u origin master
Counting objects: 7840, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2817/2817), done.
error: object 324f9ca2aaae7b1d716db3fc31c02d391c1c2c16:contains '.git'
fatal: Error in object
error: pack-objects died of signal 13
error: failed to push some refs to 'git@github.com:asdf/zxcv.git'
Run Code Online (Sandbox Code Playgroud)
"包含'.git'"错误有非常广泛的术语,找不到任何文档,因此我尝试在原始仓库中搜索现有的".git"文件夹,我做了.有一个subsubsub文件夹,其中包含我使用git rm删除的旧git存储库的实例,但问题仍然存在.
无论如何我可以把它推到github或新的清洁回购是唯一的选择吗?
任何帮助在此赞赏.谢谢!
我想创建一个基于 Kafka 流的应用程序,该应用程序处理一个主题并分批接收大小为 X(即 50)的消息,但如果流的流量较低,则在 Y 秒(即 5)内给我任何流。
因此,我不是一个一个地处理消息,而是处理List[Record]列表大小为 50(或可能更少)的 a。
这是为了使一些 I/O 绑定处理更有效。
我知道这可以用经典的 Kafka API 来实现,但我正在寻找一种基于流的实现,它也可以在本地处理偏移提交,并考虑到错误/失败。我在他的文档中或通过四处搜索都找不到任何相关的内容,并且想知道是否有人可以解决此问题。