草庐IT

【JavaEE】线程池

全部标签

Java:无法创建新的 native 线程

我有一个由网络托管公司托管的Java应用程序。每隔几天我的应用就会出现故障:[2011-03-0915:52:14,501]ERRORhttp-12021-9java.lang.OutOfMemoryError:unabletocreatenewnativethreadatjava.lang.Thread.start0(NativeMethod)atjava.lang.Thread.start(Thread.java:597)托管公司说这意味着我的应用程序正在泄漏内存,但我拥有的工具显示空闲内存仍然可用。由于错误总是创建一个新的native线程,我的想法是问题出在JVM配置/操作系统资

java - 如何实现多个 'threads'只在一个线程中运行

最近我一直在想:他们如何在一个线程中实现多个“线程”?我的意思是,他们如何在一个线程中实现多段并行运行的代码?他们如何保存“线程”的状态、创建中断并将CPU传递给下一个线程?我认为ScalaActor实现了这一点。但是如何呢?这个对于JVM或者C都可以回答,没关系。我真的很想了解它的理论。 最佳答案 我觉得你很困惑coroutines和greenthreads在这里。协程在准备执行时放弃控制,没有任何中断,所以中断的问题在这里无关紧要。Scala参与者作为协程实现。绿色线程是虚拟机在不使用native操作系统功能的情况下实现的用户模

允许多个线程同时读取或一个修改的Java类

假设您有以下类(class):classA{privateFoofoo=newFoo();FoogetFoo(){returnfoo;//foo.clone()?}voidmodifyFoo(){//modifythis.foo//...}}我想允许:多个线程调用getFoo()或一个线程调用modifyFoo(),一旦一个线程想要修改foo,在修改完成之前,不会执行其他新的getFoo()调用,直到修改完成。在Java中是否已经有针对这个问题的类,或者我是否必须实现它?如果一定要实现,那么如何实现才能保证线程安全? 最佳答案 听起

java - 如何在kafka 0.9.0中使用多线程消费者?

kafka的文档给出了一个关于以下描述的方法:OneConsumerPerThread:Asimpleoptionistogiveeachthreaditsownconsumer>instance.我的代码:publicclassKafkaConsumerRunnerimplementsRunnable{privatefinalAtomicBooleanclosed=newAtomicBoolean(false);privatefinalCloudKafkaConsumerconsumer;privatefinalStringtopicName;publicKafkaConsumerR

React中使用多线程—Web Worke

前言作为一个前端开发,如果你还停留在每天CRUD,还停留在切图/画图,还停留在和后端同学对某个API设计的是否合理而大打出手时,是时候停下来了。我们要变强,我们需要对我们经手的项目进行一番改造和优化。这才是我们能够变强的方式。而不是,沉浸在无休止的争吵和埋怨中。众所周知,Javascript是一种「单线程语言」。因此,如果我们执行任何耗时任务,它将阻塞UI交互。用户需要等待任务完成才能执行其他操作,这会给用户体验带来不好的影响。其实,针对此类问题,我们有很多解决方案,例如将耗时任务分割成多个短任务,并让其在多个渲染帧内执行,给UI交互(也就是UI渲染)留有时间,也可以通过回调的方式,在UI交互

java - JDBC 基本概念,池和线程

我一直在单线程环境下使用JavaSE中的JDBC。但是现在我需要使用连接池并让许多线程与数据库(MSSQL和Oracle)进行交互,我很难尝试做到这一点,因为我似乎缺乏对api的一些基本理解。连接并记录Connection后的AFAIK表示到数据库的物理tcp/ip连接。它创建Statement(s),可以将其视为通过Connection与数据库的SQL交互。事务和回滚从何而来?它是在Connection还是Statement级别。“一个”Connection创建N条语句并将其提供给不同的线程以便让每个线程都拥有该Statement的使用是否安全?如果没有,在配置池之后是这样的:Ora

java - 如何使静态日历线程安全

我想为一些静态方法使用日历并使用静态字段:privatestaticCalendarcalendar=Calendar.getInstance();现在我读到java.util.Calendar不是线程安全的。我怎样才能使这个线程安全(它应该是static)? 最佳答案 如果不是的话,你就不能使它成为线程安全的。对于Calendar,即使从中读取数据也不是线程安全的,因为它可以更新内部数据结构。如果可能的话,我建议使用JodaTime相反:大多数类型是不可变的不可变类型是线程安全的总的来说这是一个更好的API如果您确实必须使用Cal

java - 在多个服务器上分配 Java 线程?

我是Java的新手,非常喜欢学习它。我制作了一个运行良好的程序,但当我添加更多数据以供处理时需要花费一些时间。我使它线程化,它确实加快了很多速度,但现在我正在考虑尝试加快它的速度(显然,它必须处理的数据越多,花费的时间越长)。仅供引用,我的程序不在线程之间共享任何数据,它获取列表中的一项并进行一些数学运算并将结果上传到数据库。理想情况下,几台工作计算机获取列表​​中的一些项目,然后执行其工作,然后获取更多工作直到完成我做了一些研究并找到了队列,但我不确定它是否是我需要的,或者是否还有其他东西(我也在想保持worker的完整性/监控可能对我来说太过分了新手)。我家里有4台电脑(一些Lin

java - HashBiMap 是线程安全的吗?

com.google.common.collect.HashBiMap的文档不要说明它是否是线程安全的。我想这意味着它不是,但我想我会问以防我错了。 最佳答案 HashBiMap内部使用了多个自定义哈希表,这些哈希表不是线程安全的。您应该使用以下方式同步对HashBiMap的访问:Maps.synchronizedBiMap(yourHashBiMap); 关于java-HashBiMap是线程安全的吗?,我们在StackOverflow上找到一个类似的问题:

java - 在java中杀死一个正在运行的线程?

如何在java中杀死正在运行的线程 最佳答案 您可以通过调用Thread.interrupt()要求线程中断请注意,存在一些具有类似语义的其他方法-stop()和destroy()-但它们已弃用,因为它们是unsafe.不要试图使用它们。 关于java-在java中杀死一个正在运行的线程?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3130701/