草庐IT

MPI_THREAD_MULTIPLE

全部标签

java - Thread.setName(name) 注意事项

我有一个使用套接字的多线程客户端服务器应用程序。当找到新的连接时,进一步的执行将转移到使用新的Executors线程池的新线程。我想在该客户端的所有日志语句中记录客户端ID。问题是我不想仅仅为了传递客户端ID而修改方法签名。我想到的解决方案是:使用ThreadLocal来保存客户端值。在run()中,我可以使用Thread.currentThread().setName(clientId);将客户端ID设置到线程中;第一个应该可以。但我喜欢第二种选择,因为一种。我可以从调试器中找到客户端IDb.记录器库可以配置为显示线程名称。因此不需要对日志语句进行任何更改,它也适用于库内的记录器。除

Java 命令行界面 : having multiple progress bars on different lines using '\r'

我正在编写的程序的命令行界面的一部分调用了多个进度条。我目前可以通过使用\r转义序列和类似于此的内容来更新控制台中的一行:System.out.printf("\rProcessis%d%%complete",percentageComplete);然而,回车只能返回到该行的开头。我想要一种返回两行(或更一般地说,任意数量的行)并让它们全部/全部更新的方法。有什么办法吗? 最佳答案 我已经为命令行进度条编写了一个小项目,它可以做一个衬垫或一个“主/细节”-参见https://github.com/tomas-langer/cli/t

Java 套接字 : One Server and Multiple Clients

所以我用java创建了一个基本的客户端-服务器程序。它开始是这样的:客户端连接到服务器服务器询问客户的名字客户回复姓名服务器问候客户在此之后,客户端说话,服务器重复这些话我使用thistutorial没有太多麻烦就让它工作了.每当我尝试介绍多个客户时,问题就会出现。我认为它会工作,因为我使用的是多线程,但是,第二个客户端只是挂起,直到第一个客户端退出然后它开始工作(服务器确实接受来自第二个客户端的输入,但它没有响应直到第一个客户退出。这是我使用的代码:importjava.net.*;importjava.io.*;publicclassServerextendsThread{priv

java - Akka/Java : Handling multiple message types inside a custom actor?

要在Akka(Java绑定(bind))中实现您自己的自定义actor,您可以扩展UntypedActor基类。这需要您定义自己的onReceive(...)方法:@OverridepublicvoidonReceive(Objectmessage){//TODO}手头的问题是确定一种消息处理策略,使参与者能够处理多种类型的消息。一种策略是使用反射/类型。这里的问题是:它迫使我们创建空的“外壳类”,这些类只是为消息提供语义意义(见下文);和它占用了message参数并阻止我们传递任何动态或有意义的内容空壳类的例子:publicclassEmptyShellMessage{}然后在onR

java - tomcat升级后并行流不设置Thread.contextClassLoader

在tomcat从8.5.6升级到8.5.28之后,并行流停止为线程提供contextClassLoader:因为Warmer::run无法加载其中的类。warmers.parallelStream().forEach(Warmer::run);您是否知道Tomcat为新线程的contextClassLoader提供了什么?ParallelStream在最新的Tomcat中使用ForkJoinPool。 最佳答案 CommonForkJoinpool存在问题,可能会导致内存泄漏以及应用程序能够从其他上下文/应用程序加载类和资源(如果您

java - 为什么Java中的java.lang.Thread类没有被设计者标记为final?

当我们可以通过实现Runnable并将其传递给Thread构造函数来实现相同的功能时,允许用户通过扩展Thread类来创建线程的本质是什么。 最佳答案 achievethesamefunctionalitybyimplementingRunnableandpassittotheThreadconstructor扩展Thread的使用不限于Runnable。例如你可以changethebehaviorofsomemethods或添加您自己的线程本地信息(始终可以通过Thread.currentThread()访问)。

java - 如何编写响应 `Thread.interrupt()` 的 native 代码?

在Java中,所有标准的阻塞方法都可以通过调用Thread.interrupt()来中断,但是如果我们有Java绑定(bind)包装一个自己执行I/O的本地库呢?那么native代码应该如何挂接到线程并响应对Thread.interrupt()的调用? 最佳答案 示例代码有关完整的文章,包括可运行的示例代码,请参阅https://github.com/NWilson/javaInterruptHook.Thread.interrupt()是如何工作的?在Sun的JRE(和OpenJDK)中,interrupt()能够自行唤醒一些低级

java - 为什么 Thread.stop() 如此危险

为什么Thread.stop()如此危险?为什么建议改用Thread.interrupted()?我知道stop已被弃用。还有什么其他因素使它不安全?有什么地方可以使用stop方法吗?如果是这样给我一个例子。 最佳答案 WhyisThread.stop()sodangerous?此处详细描述了问题:http://download.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.htmlWhyisitadvisableto

java - 使用 Tomcat : Providing multiple projects' dependencies? 部署 Eclipse Web 应用程序

在使用Tomcat6和Eclipse部署我的动态Web应用程序时,我无法提供我正在使用的一些第三方库(JAR文件)。请注意,我确实知道如何在Web应用程序项目“直接”依赖于那些JAR的设置中执行此操作。但是,在我的设置中,我有两个Eclipse项目:core是一个类库,比方说,它依赖于a.jar。web是网络应用程序,它依赖于核心。在web的项目设置中,在DeploymentAssembly类别中,我添加了core,所以Eclipse(或Tomcat-我'我不太确定这里的负责人是谁)正在将core.jar放入我的Web应用程序的libs目录中。问题是:当我试用Web应用程序时,当cor

java - Find out if the calling thread is the SWT UI thread - 确定调用线程

我有这个模块用于应用程序COMM的多个部分(在SWTUi端、后端等)。这个模块有一个sendMessage方法,我想在其中添加一个例程来确定调用线程(只是为了在UI中使用它)是SWTUI线程。并警告程序员,他正在尝试从UI线程执行耗时的操作……这很糟糕:)当然,我想通过不在UI模块(来自COMM)上添加任何依赖项来做到这一点。如何确定调用线程是否是SWTUI线程?谢谢,米尔恰 最佳答案 您可以调用Display.getThread()来获取应用程序的当前UI线程。如果您不想依赖SWTUI,那么您将不得不使用反射。例如:publics