草庐IT

Tread多线程

全部标签

java - AWT 快速图形和线程安全

我正在将一个非常古老的AWT游戏移植到一个非常糟糕的新设备上。这款游戏有一大堆问题,包括对线程安全的一种非常松懈的方法:游戏引擎试图使用从UI线程获得的图形上下文在其引擎线程中直接绘制到屏幕上。这在设备上不起作用。我设法让它开始工作,方法是让引擎线程绘制到屏幕外缓冲区,然后让UI线程定期调用显示组件上的repaint(),然后显示组件将缓冲区blit到屏幕上,但性能很糟糕——考虑到所有上下文切换和双缓冲,这不足为奇。我实际上并不是一个知识渊博的AWT程序员;到目前为止我一直避免它,这已经够可恨了。但是这个问题——有一个引擎线程想要在屏幕上绘制——一定是一个常见的问题。有谁知道任何体面的

java - 对象未被终结且 Finalizer 线程未执行任何操作

在我们的服务器上,我们开始遇到OutOfMemoryError问题。我们使用EclipseMemoryAnalysis分析了堆转储,发现有许多对象被保留以进行终结(大约占堆的2/3):我们发现,它可能是一些finalize()方法阻塞。我发现了几个关于这个问题的错误报告(here或here),它总是在Finalizer线程堆栈中表现出来,它在某处被阻塞。但在我们的例子中,这个线程正在等待:"Finalizer"daemonprio=10tid=0x43e1e000nid=0x3ffinObject.wait()[0x43dfe000]java.lang.Thread.State:WAI

java - 在 Elasticsearch 中创建 TransportClient 时限制 ThreadPool 中的线程数

我正在elasticsearch中创建一个TransportClient实例。下面是相同的代码。问题是我正在尝试减少使用TransportClient启动的线程池生成的线程数。但是我使用我的elasticsearch的任何设置总是用12个线程初始化线程池。请让我知道如何配置它以获得所需的线程。publicstaticTransportClientgetTransportClient(Stringip,intport){ImmutableSettings.Buildersettings=ImmutableSettings.settingsBuilder();settings.put("c

Java Swing多线程访问JTextArea

我有一个多线程JavaSwing应用程序。多个线程将通过textArea.append("something")写入JTextArea来调用该方法。我应该这样包装吗:SwingUtilities.invokeLater(newRunnable(){@Overridepublicvoidrun(){textArea.append("something");}});或者它只是一个内容更新,Swing会自己做正确的线程? 最佳答案 一般来说,您对Swing所做的任何更新,尤其是任何更改控件状态或布局的操作,都应该在Swing线程中完成。在

Java 线程在哪个处理器上运行?

有没有办法使用Javanative线程找出您的线程正在运行的处理器(在单个系统或多个系统上)?如果没有,是否有任何图书馆可以提供帮助? 最佳答案 JVM的线程调度程序是特定于JVM的,因此没有“通用”的解决方案。据我所知,没有现成可用的东西,但可能使用:SunJVM;Solaris-或Mac,正如TomHawtin-tackline指出的那样;DTrace.你可能有一些运气:跟踪thread-start探测器,它具有作为args[3]的“native/操作系统线程ID。这是主机操作系统分配的ID"使用特定于Solaris的实用程序将

java - 在*多线程* Swing 应用程序中使用 Hibernate 进行 session 管理

我目前正在从事我的一个(相当大的)宠物项目,一个本质上需要多线程的Swing应用程序。几乎所有的用户交互都可能通过互联网从一些远程服务器获取数据,因为我既不控制这些服务器也不控制互联网本身,因此较长的响应时间是不可避免的。当EDT繁忙时,SwingUI显然无法重绘自身,因此所有远程服务器调用都需要由后台线程执行。我的问题:后台线程获取的数据通过本地(内存中)数据库中的数据“丰富”(远程服务器返回本地数据库中数据的ID/引用)。这些数据后来最终被传递到EDT,在那里它成为View模型的一部分。某些实体此时未完全初始化(启用延迟获取),因此用户可能会触发延迟获取,例如在JTable中滚动。

读取套接字时Java中断线程

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:HowtoterminateathreadblockingonsocketIOoperationinstantly?我让客户端在线程中运行,想从Java中的套接字读取数据。但是在阅读时,也许我想终止线程。所以我中断它,但是套接字的读取方法会抛出InterruptedException吗?我没找到。那么,当线程在读取套接字时阻塞时,我怎样才能很好地让线程死掉?谢谢

java - "Java concurrency in practice"- 缓存的线程安全数字分解器( list 2.8)

在以下代码中(复制自JavaConcurrencyinPractice第2章,第2.5节,list2.8):@ThreadSafepublicclassCachedFactorizerimplementsServlet{@GuardedBy("this")privateBigIntegerlastNumber;@GuardedBy("this")privateBigInteger[]lastFactors;@GuardedBy("this")privatelonghits;@GuardedBy("this")privatelongcacheHits;publicsynchronized

java - 守护线程 Java

这个问题在这里已经有了答案:WhatisadaemonthreadinJava?(27个答案)关闭9年前。我是并发和线程的新手-在开发我的应用程序时一直在使用它们。本质上,我的RMI应用程序(服务器端组件)中有许多线程轮询文件中的更改(这些文件每隔几秒更新一次)。在开发箱上进行测试时,我一直从命令行运行服务器,然后在完成后手动关闭它,并在一天中不断重复。正如它所发生的那样-我认为当我关闭命令行并仍在继续处理时我的线程可能不会停止。这会导致一些非常糟糕的副作用——虽然我不是100%确定这是否可能,所以希望有人可以确认这可能是这种情况。如果我将一个线程设为守护进程——这是否意味着当我关闭命

java - 有没有办法确定 Java 线程何时启动?

我收到了一个请求,要对JVM中正在运行的线程进行分析,以监控长时间运行的作业。有没有办法找到Java线程的开始日期/时间?我在获取线程方面没有问题,但是我想不出任何方法来查明线程已激活多长时间或何时开始。为了获取线程,我只是对ThreadGroup进行枚举。请注意,我无法控制实际线程本身,因此我无法输入任何时间或属性并自行记录开始时间。我所拥有的只是实际线程本身,需要从中确定数据。我可以在线程上找到两种方法——“getThreadCpuTime()”和“getThreadUserTime()”,但我不确定这些是否足够,因为显然线程偶尔会调用sleep()方法,我担心“sleep”时间不