用《三体》中的智子来解释并发

突然想到《三体》第一部中的智子可以用来很好的解释并发。

看过《三体》的话应该知道,三体星人为了遏制地球的基础理论研究发展,从四百光年外的三体星向地球发射了两枚智子。(没记错的话,应该是利用了书里提出的恒星加速原理才得以发射到这么远的距离)

智子到达地球之后,由于智子的运动速度接近光速,它们可以在地球上的任意两点之间进行“瞬移”,可以认为它们“无所不在”。

因此三体星人仅以两枚智子的数量对地球上所有的高能粒子对撞机进行实验干扰,使得实验结果出现偏差,从而封锁了地球基础理论科学研究的进步。

如果把能够高速移动的智子看作高速运转的cpu,把地球上的各个粒子对撞机看作计算机中的各个线程,那么就......

阅读更多

浅析多线程编程对程序的性能提升

目录

1. 前言
2. 串行、并发与并行
3. 单线程编程与多线程编程
4. IO密集型程序与CPU密集型程序
5. 实例:利用多线程提升累加程序的性能
    (1)功能描述
    (2)多线程优化思路
    (3)代码实现
    (4)测试结果

1、前言

最近在巩固java多线程编程相关的知识,并且做了一些实验。

今天就用这一篇文章来总结下最近所学到的关于多线程编程方面的知识点,并且用一个实例来具体说明问题。......

阅读更多

分班算法实现过程中的效果以及性能优化

之前在这篇文章:基于班级条件权重表的试探性学生分班算法(详解篇)中介绍过分班算法的理论步骤。

分班算法设计仅仅是给出了一个大致的思路。

其实算法中的很多步骤在实现过程中是可以进一步优化的。

本篇文章记录一下我在实现分班算法的过程中,进行的一些优化,主要包括以下几方面:

1. 单一条件分班时采用循环算法得到最优解
2. 可配置的权重系数计算规则
3. 增加redis锁防止重复分班
4. 引入线程池将分班过程多线程化

单一条件分班时的特殊处理

单一条件分班其实是一种特殊的分班情况,这种情况下的分班结果是有最优解的,达成最优解的分班方式就是将所有学生按照分班条件排序,然后循环分班。......

阅读更多