草庐IT

needs_thread_safety

全部标签

Thread.sleep() 的 Java 性能问题

内联JavaIDE提示状态,“在循环中调用Thread.sleep会导致性能问题。”我在文档的其他地方找不到任何说明。这个声明。为什么?如何?还有什么其他方法可以延迟线程的执行? 最佳答案 循环中的Thread.sleep本身并不是性能问题,而是通常暗示你做错了什么。while(!goodToGoOnNow()){Thread.sleep(1000);}仅当您想将线程挂起一段时间时才使用Thread.sleep。如果您想等待某个条件,请不要使用它。对于这种情况,您应该改用wait/notify或并发工具包中的一些构造。Thread.

java - Thread.sleep() VS Executor.scheduleWithFixedDelay()

目标:每隔一段时间执行某些代码。问题:在性能方面,是否存在显着差异:while(true){execute();Thread.sleep(10*1000);}和executor.scheduleWithFixedDelay(runnableWithoutSleep,0,10,TimeUnit.SECONDS);?当然,后一种选择更洁净。然而,我想知道我是否应该开始一次名为“花几天时间重构遗留代码来告别Thread.sleep()”的冒险。更新:此代码运行在超/兆/超高负载环境中。 最佳答案 您正在处理以数十秒为单位的sleep时间。

java - Thread.sleep() VS Executor.scheduleWithFixedDelay()

目标:每隔一段时间执行某些代码。问题:在性能方面,是否存在显着差异:while(true){execute();Thread.sleep(10*1000);}和executor.scheduleWithFixedDelay(runnableWithoutSleep,0,10,TimeUnit.SECONDS);?当然,后一种选择更洁净。然而,我想知道我是否应该开始一次名为“花几天时间重构遗留代码来告别Thread.sleep()”的冒险。更新:此代码运行在超/兆/超高负载环境中。 最佳答案 您正在处理以数十秒为单位的sleep时间。

C#相当于Java的Thread.setDaemon?

如何在C#中将线程设置为守护线程? 最佳答案 虽然您已经回答了您的自己的问题,但我仍想详细说明一下。在C#.NET中,与Java不同C#Backgroundthreads~JavaDaemonthreadsC#Foregroundthreads~JavaUserthreads默认情况下,您显式创建的线程是foreground线程。“后台线程与前台线程相同,只是后台线程不会阻止进程终止。”(reference)你可以通过创建一个线程守护进程thread.IsBackground=true;

C#相当于Java的Thread.setDaemon?

如何在C#中将线程设置为守护线程? 最佳答案 虽然您已经回答了您的自己的问题,但我仍想详细说明一下。在C#.NET中,与Java不同C#Backgroundthreads~JavaDaemonthreadsC#Foregroundthreads~JavaUserthreads默认情况下,您显式创建的线程是foreground线程。“后台线程与前台线程相同,只是后台线程不会阻止进程终止。”(reference)你可以通过创建一个线程守护进程thread.IsBackground=true;

【AUTOSAR-E2E】-1.1-End-to-End通信保护介绍(Functional Safety功能安全相关)

目录1常见的通讯故障以及E2E机制能够检出的通讯故障2Functionalsafety功能安全对通信的要求3通信故障的原因3.1软件故障3.2随机硬件故障3.3外部影响、环境压力4常见的“E2E通讯保护”解决方案4.1无E2E保护的信号数据流示例4.2E2EProtectionWrapper解决方案示例4.3E2ETransformer解决方案示例4.3COME2ECallout解决方案介绍5E2Eprofile介绍5.1E2EProfile1机制5.2E2EProfile2机制5.3E2EProfile4机制5.4E2EProfile5机制5.5E2EProfile6机制5.6E2EProf

java - 在 Java 中使用 synchronized (Thread.currentThread()){...} 的目的是什么?

我在我们的项目中遇到了以下代码:synchronized(Thread.currentThread()){//somecode}我不明白在currentThread上使用同步的原因。有什么区别synchronized(Thread.currentThread()){//somecode}只是//somecode你能举个例子说明区别吗?更新更详细的这段代码如下:synchronized(Thread.currentThread()){Thread.currentThread().wait(timeInterval);}看起来只是Thread.sleep(timeInterval)。是真的

java - 在 Java 中使用 synchronized (Thread.currentThread()){...} 的目的是什么?

我在我们的项目中遇到了以下代码:synchronized(Thread.currentThread()){//somecode}我不明白在currentThread上使用同步的原因。有什么区别synchronized(Thread.currentThread()){//somecode}只是//somecode你能举个例子说明区别吗?更新更详细的这段代码如下:synchronized(Thread.currentThread()){Thread.currentThread().wait(timeInterval);}看起来只是Thread.sleep(timeInterval)。是真的

java - "array initializer needs an explicit target-type"- 为什么?

关注JEP286:Local-VariableTypeInference说明我想知道,引入这种限制的原因是什么,例如:Main.java:199:error:cannotinfertypeforlocalvariablekvark={1,2};^(arrayinitializerneedsanexplicittarget-type)所以对我来说逻辑上应该是:vark={1,2};//Infersint[]varl={1,2L,3};//Inferslong[]因为Java编译器可以正确推断出数组的类型:voiddecide(){arr(1,2,3);//callvoidarr(int.

java - "array initializer needs an explicit target-type"- 为什么?

关注JEP286:Local-VariableTypeInference说明我想知道,引入这种限制的原因是什么,例如:Main.java:199:error:cannotinfertypeforlocalvariablekvark={1,2};^(arrayinitializerneedsanexplicittarget-type)所以对我来说逻辑上应该是:vark={1,2};//Infersint[]varl={1,2L,3};//Inferslong[]因为Java编译器可以正确推断出数组的类型:voiddecide(){arr(1,2,3);//callvoidarr(int.