怎么计算每个线程执行的次数 r7 1700相当于几代i7?
r7 1700相当于几代i7?
第四代
从性能上看,AMD锐龙R7 1700 8核16线程相当于Intel s酷睿i7-4960X。是第四代i7级别的CPU,6核12线程,22 nm工艺制造。
redis公平锁原理?
锁执行的原子性主要通过锁定lua脚本和设置到期时间来保证。然后,每个线程将获取锁1次,释放锁-1次,如果为0,则表示锁释放成功。
可重入原则与JDK的可重入锁是一致的。
JDK也有公平锁和不公平锁。所谓的公平锁是为了确保客户端获得锁的顺序与他们请求锁的顺序相同。公平锁需要排队。谁先申请这个锁,谁就能先拿到,按请求的顺序。
多线程查询数据库?
如果Excel文件中有很多记录,可以考虑使用多线程。您可以考虑在多线程设计模式中使用生产者-消费者模式。
首先专门创建一个线程(一个就够了,多了没用,以下简称Reader线程),负责读取Excel文件中的记录。比如使用第三方工具POI,此时读取的Excel记录是一个Java对象。每次线程读取一条记录时,都会将它存储在一个队列中(比如ArrayBlockingQueue)。它只负责读取记录并将它们存储在队列中,其他什么都不做。
其次,多设置几个线程(如果一个就够了,就一个。最好不要超过系统中CPU的数量。
,以下简称处理器线程),这些线程负责从上面的队列中取记录(对象),然后检查记录中的数据并写入数据库(这里我假设导入目标是数据库,你的问题没有指定导入目标是什么)。
最后,在Reader线程读取了所有记录之后,需要 "通知 "处理器线程:当您处理完所有记录后,您可以停止。这可以借助多线程设计模式中的两阶段终止模式来实现。主要思想是为要停止的线程(目标线程,这里是处理器线程)设置一个停止标志,并设置一个变量表示目标线程的工作任务数(这里是需要处理多少条记录)。当目标线程检测到要处理的任务数为0并且线程停止标志设置为真时,可以停止线程。
两阶段终止模式参考这里:Java多线程编程模式实用指南(三):两阶段终止模式。
。更多细节,请参考我的新书。最后,相应地注意产品的粒度。也就是说,什么对象是 "产品和服务由读取器线程存储在队列(传输通道)中?是一条Excel记录还是多条Excel记录?一般来说,为了减少产品在队列中移动的次数(减少相应的开销),产品的粒度应该设置得比较粗。例如,创建一个容器对象来存储多条记录。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。