Java 并发基础(二)

线程安全问题

线程安全问题是指当多个线程同时读写一个共享资源并且没有任何同步措施时,导致出现脏数据或者其他不可预见的结果的问题。线程 A 和线程 B 可以同时操作主内存中的共享变量,那么线程安全问 题和共享资源之间是什么关系呢?是不是说多个线程共享了资源,当它们都去访问这个共 享资源时就会产生线程安全问题呢?答案是否定的,如果多个线程都只是读取共享资源,而不去修改,那么就不会存在线程安全问题,只有当至少一个线程修改共享资源时才会存 在线程安全问题。最典型的就是计数器类的实现,计数变量 count 本身是一个共享变量,多个线程可以对其进行递增操作,如果不使用同步措施,由于递增操作是获取—计算—保存三步操作,因此可能导致计数不准确,如下所示。

Java 并发基础(一)

什么是线程?

要讲清楚线程,必须先从进程说起。线程并非独立存在,而是进程内部的一个实体。简单来说,进程是系统进行资源分配(内存、文件句柄、信号处理等)和调度的基本单位。它为程序提供了一个独立的“容器”或“空间”。而线程则是进程中的一条执行路径。一个进程至少包含一个线程(主线程),多个线程共同共享进程所拥有的资源。这就像餐厅和厨师的关系,进程就相当于一家餐厅,而线程就是这家餐厅干活的厨师,一个店里可以只有一个厨师(单线程),也可以雇好几个厨师共享厨房(多线程)。

linux下编译和安装python3

Linux下大部分系统默认自带python2.x的版本,最常见的是python2.6或python2.7版本,默认的python被系统很多程序所依赖,比如centos下的yum就是python2写的,所以默认版本不要轻易删除,否则会有一些问题,如果需要使用最新的Python3那么我们可以编译安装源码包到独立目录,这和系统默认环境之间是没有任何影响的,python3和python2两个环境并存即可。