线程

多线程 – 上下文切换中保存的内容?

在两个线程之间的上下文切换中精确保存和恢复的内容>在同一个过程中>两个进程之间解决方法这是一个相当复杂的问题,因为答案取决于许多事情:>有问题的cpu>即使在同一个系列中也可能有很大差异,例如为SSE/MMX操作添加的附加寄存器.>操作系统,因为它控制在上下文切换中触发的处理程序,并决定是否使用cpu的硬件(如果有)来辅助上下文切换.>例如Windows不使用可以为您做大量上下文切换存储的Inte

多线程 – 静态数组可以从多个线程安全访问吗?

如果每个线程都保证只读/写入数组的特定子集,则多个线程可以在不使用关键部分等的同一(静态)数组上工作?我的直觉是肯定的,但我的直觉有时可能是不可靠的信息来源.解决方法假设:>你有一个单一的数组实例,和>数组的元素是纯值类型,和>每个线程在不相交的子数组上进行操作>系统中的其他任何东西都会在线程正在运行时写入阵列.有了这些条件,我相信您的数据结构和线程模式可以满足,所有算法都是线程安全的.

多线程 – 重入锁定:优点和缺点?

在什么情况下,人们想要使用折返锁与普通锁?解决方法我认为,与普通锁相比,可重入锁会有一些额外的开销–检查正在获取锁的线程.因此,如果您知道在正常操作下线程只会在再次释放之前获取一次锁定,您可以通过使用普通锁定获得一些性能.这在紧密循环等方面尤其有用.

java – 实现线程安全共享计数器的功能方法

我对Scala和函数式编程比较陌生,我喜欢使用不可变对象的想法,我可以避免许多线程安全陷阱.有一件事仍然困扰着我,这是用于教授线程安全的经典示例–共享计数器.我想知道是否可以实现线程安全计数器,使用不可变对象和功能概念,并完全避免同步.所以在这里参考首先是计数器的经典可变版本可变,非线程安全版本:可变,经典的线程安全版本:(或者我希望…

关于Java多线程的一个问题

假设以下课程假设有两个线程访问相同的TestObject类实例,让我们称它们为t1和t2.我想知道在以下场景中会发生什么.>当t1处于访问method1()的中途时.现在t2正在尝试访问method2().>当t1处于访问method2()的中途时.现在t2正在尝试访问method1().我的理解是,对于第一个问题,线程t2将不被授予权限,因为对象将被t1锁定.对于第二个问题,线程t2将被授予访问权并锁定对象并将t1从执行中停止.但我的假设是错误的.有谁能解释一下?

Java – 没有GUI的倒数计时器

基本上我正在制作一个基于文本的“游戏”.但是,作为其中的一部分,我希望有一个计时器.它会减少我希望从变量到0的时间.现在,我已经看到了一些使用gui执行此操作的方法,但是,有没有一种方法可以在没有gui/jframe等的情况下执行此操作.所以,我想知道的是.你可以在不使用gui/jframe的情况下从x到0进行倒计时.如果是这样,你会怎么做?

多线程 – 为什么线程饿死甚至抢先的多任务操作系统(Windows 7)

我写了一个Win32应用程序来创建100个线程.每个线程在恢复时将连续(循环)增加与线程对象相关联的64位计数器.如果让系统运行10到15秒,然后停止,那么每个线程都应该看到大致相同的计数.但是我所观察到的是,81条线程运行不到4亿次循环,其余的循环次数超过9.5亿次.最慢的线程只有2.3亿,而最快的2111万.根据MSDN,抢占式多任务处于线程级别,所以我的每个线程都应该以循环方式获得时间片段.我在这里缺少什么,为什么这个差异?

java – ExecutorService,如何知道所有线程何时完成而不阻塞主线程?

我有一个多线程实现,我创建一个ExecutorService并提交要执行的任务,我想知道所有线程被提交的时间已经完成而没有阻塞主线程和UI.我已经尝试过ExecutorService.awaitTermination()但它阻止了主线程和UI.我搜索了很多,但我似乎无法找到一种优雅的方式来做到这一点.我正在考虑创建另一个线程来计算完成的线程数量,并在它们全部完成时启动一个事件,但这不是一个好方法,