显式锁
显式锁,即Java接口Lock,ReentranLock是其中的一个实现,与synchronized一样具有可重入的特性,同时具有可以自定义公平性,可轮询,可定时,可中断的高级特性。是Java 5.0之后引入用于调节共享对象访问的机制。Java 6.0之后,synchronized做了很多优化,其性能和显示锁差异不大,因此在使用时,只有用到显示锁的高级特性才使用显示锁,特别是因为显示锁需要手动释放,所以具有一定的隐患。下面对显示锁可响应中断的高级特性进行测试。
Do not go gentle into that good night
多道程序设计允许多个程序进入内存运行,提高CPU利用率和效率,为了区分进入内存的不同程序,引入了“进程”概念。
进程是具有独立功能的程序关于某个数据集合上的一次运行活动。是系统进行资源分配和调度(不支持线程机制时)的独立单位,每个进程分配了独立的地址空间。
进程切换开销大,且进程内部需要并行实现不同功能,如浏览器进程需要在播放视频时下载文件,由于线程间切换通信更快,无需经过内核(因为进程内共享内存和文件),因此引入线程,作为调度的基本单位。
在windows中,线程作为分配CPU的基本单位,如果线程数不大于CPU核数,任务并行运行,大于CPU核数时,任务并发运行。
这是李宏毅老师2018年春季深度学习课程的第二章,主要讲了神经网络的损失函数是非凸的,但是我们仍然有办法去达到local minima,但是如何达到global minima,还有待探索。