草庐IT

C++11多线程—thread

全部标签

java - Java 垃圾收集器会停止我从 JNI 调用创建的 POSIX 线程吗?

我有一个时间紧迫的应用程序,需要按设定的时间表发送UDP数据报。接收端对抖动的容忍度非常低。用javaScheduledThreadPoolExecutor实现它是不够的,因为当GC执行“停止世界”收集时,我的线程暂停,而GC执行它的工作。我想在Java中实现业务逻辑,同时在C++中使用POSIX线程实现时间关键部分(顺便说一句,native环境是Linux)。这将使我们能够节省数千行用Java编写的代码,并从native系统调用中获得我们需要的节奏。我的问题是:如果我调用创建单独POSIX线程的JNI函数,当JavaGC执行“停止世界”收集时,该线程是否会“暂停”?经验丰富的JNI大

java - 多线程循环赛

我正在尝试测试8种不同的游戏算法。这些算法可以相互对抗遵循游戏界面的不同类型的游戏。所以,他们必须对战100场比赛。我已经完成了那部分并且工作正常。现在,我正在尝试使其成为多线程,以利用friend计算机的8核。我使用线程的经验很少。那么,为了使我的代码成为多线程,我必须进行哪些更改?这是我的单线程版本的代码。编辑:我想到的解决方案(根据我的基本知识)是制作一个Match类,它需要两个玩家和他们想玩的游戏。该类将实现Runnable,我可以为每个游戏创建一个线程。我现在的问题是,一旦run()方法完成,我将如何通知结果?谢谢for(intp1=0;p1 最佳

java - 即使在 Websphere 中应用程序已停止后,线程仍会继续运行

我有一个长时间运行的线程,它是使用org.springframework.scheduling.commonj.WorkManagerTaskExecutor创建的使用Spring并在WebsphereApplicationServer8中运行。问题是即使应用程序已停止,该线程仍继续运行。该线程也需要停止,但它没有发生。我什至尝试使用Thread.currentThread().isInterrupted()来检查当前线程是否被中断,但它总是返回false。因此无法通过我的代码知道线程应该继续运行还是停止。这是我对WorkManagerTaskExecutor的spring配置:线程是

java - 防止在多线程上下文中使用非线程安全方法

当用户试图在多线程上下文中使用类的非线程安全方法时,有没有办法抛出异常?我想这个问题主要是为了检测多个线程正在尝试使用该方法。或者,我可以在函数声明中使用“not_synchronous”关键字/标签吗? 最佳答案 您可以在允许线程运行之前检查该方法是否已在使用-但这与使用锁并没有太大区别(注意:我的示例不是可重入的):privatestaticfinalAtomicBooleanused=newAtomicBoolean();publicstaticvoidunsafe()throwsInterruptedException{if

java - 有没有办法用任务管理器找到Java中运行的线程数?

在Java中,假设如果我使用如下循环启动1000个线程,有什么方法可以监控实际运行的线程数以及线程使用任务管理器消耗的CPU资源吗?for(intj=0;j 最佳答案 您可以使用VisualVM或JConsole或任何其他监控工具 关于java-有没有办法用任务管理器找到Java中运行的线程数?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12053738/

java - ConcurrentHashMap 的线程安全

我有以下类(class)。我使用ConcurrentHashMap。我有很多线程写入map和一个定时器,每5分钟将数据保存在map中。当我在map中写入条目时,我设法通过使用putIfAbsent()来实现线程安全。但是,当我从中读取然后通过clear()方法删除所有条目时,我不希望在读取映射内容然后删除它们的过程中有其他线程写入映射。显然,即使使用同步(锁){},我的代码也不是线程安全的,b/c在saveEntries()中拥有锁的线程不一定是在log()方法中写入我的映射的线程!除非我用同一个锁对象将整个代码锁定在log()中!我想知道是否有任何其他方法可以实现线程安全而无需通过外

数据结构小记【Python/C++版】——栈篇

一,基础概念栈是一种存放数据的线性结构容器,栈中的数据元素只能在同一端进行添加和删除等操作。栈中被用来进行数据读写的一端被称作栈顶,无法进行任何操作的另一端被称为栈底。元素在栈中的移动顺序依照后进先出(LIFO)原则,较早入栈的元素,更接近栈底,更晚被弹出。栈结构在生活中的抽象模型有:酒店堆起来的盘子,书架上堆起来的书等,都是从最顶部开始取走和放回的。二,栈的图示结构三,栈的常见操作push: 入栈操作,将数据从栈顶压入。pop: 出栈操作,从栈顶弹出数据。peek: 返回栈顶的数据而不删除它。size: 返回栈中数据的数量。isEmpty: 检查栈是否为空。isFull: 检查栈是否已满。四

flink重温笔记(十九): flinkSQL 顶层 API ——FlinkSQL 窗口(解决动态累积数据业务需求)

Flink学习笔记前言:今天是学习flink的第19天啦!学习了flinkSQL中窗口的应用,包括滚动窗口,滑动窗口,会话窗口,累计窗口,学会了如何计算累计值(类似于中视频计划中的累计播放量业务需求),多维数据分析等大数据热点问题,总结了很多自己的理解和想法,希望和大家多多交流,希望对大家有帮助!Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊!喜欢我的博客的话,记得点个红心❤️和小关小注哦!您的支持是我创作的动力!"文章目录Flink学习笔记六、FlinkSQL窗口1.窗口表值函数(tvfs)2.窗口分类函数及聚合操作2.

java - 是否保证所有参与线程的 compareAndSwap 都不会失败?

假设一些“N”个线程正在尝试CAS一个AtomicInteger变量,是否保证CAS必须恰好一个线程成功?是否有可能所有“N”个线程都尝试失败? 最佳答案 compareAndSet旨在由硬件实现,因此行为将取决于您运行的特定硬件。来自java.util.concurrent.atomic:Thismethod(whichvariesinargumenttypesacrossdifferentclasses)atomicallysetsavariabletotheupdateValueifitcurrentlyholdstheexp

java - 在 Java 中断言多线程代码的最佳方法是什么

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3个月前。Improvethisquestion作为TDD从业者,我想测试我编写的所有代码。在过去的几年里,我一直在编写许多多线程代码,并且我的一部分测试一直很麻烦。当我不得不对run()循环中可能发生的事情进行断言时,我最终会得到这样的断言:assertEventually(timeout,assertion)我知道Mockito对此有一个解决方案,但仅限于verify调用。我还知道JUnit有一个超时属性,可