Java Concurrency in Practice 读书笔记 第六章

6.1  在线程中执行任务
在多线程开发中,要执行多线程任务,第一步是“找出任务边界”。

一个好的并发服务器是:大吞吐量,低响应时间。当系统过载的时候,只是性能降低而不会崩溃。

网络服务器为多线程提供了自然的任务边界:每一个客户端的请求。例如Web服务器、Mail服务器、文件服务器、EJB容器、数据库服务器都接受这种请求。各个客户端之间的请求应该是互补影响的。

单线程服务器
class SingleThreadWebServer {
public static v[......]

继续阅读

CentOS下配置ftp(vsftpd)

1、安装
yum install vsftpd
2、启动
/etc/init.d vsftpd start
3、配置
vim /etc/vsftpd/vsftpd.conf
更改为下列选项
#禁止匿名
anonymous_enable=NO
#可以写入
write_enable=YES
#Nginx多用户共享的需求
local_umask=002
#所有用户不能离开家目录
chroot_local_user=YES
#只允许userlist_file中列出的用户登录[......]

继续阅读

Java Concurrency in Practice 读书笔记 第五章

5.1  同步的Collections
JDK中,同步的Collections包含Vector和Hashtable,以及从1.2之后加入的Collections.synchronizedXXX 工厂构造函数生成的类。

这些类都内置了同步措施,确保任何时间只有一个线程能访问public方法。

然而这有一些例外:下标迭代、iteration迭代、foreach、next()、pre()等都是“快速失效的”,即有可能在你调用的过程中其他线程执行了修改,导致抛出异常。

因此,下面只是[......]

继续阅读

Java Concurrency in Practice 读书笔记 第四章

第四章  组成(线程安全的)对象
4.1  设计线程安全的类
设计一个线程安全的类包含如下准则:

1、识别出哪些变量将改变类的状态

2、识别出约束状态变量的不变条件

3、建立起规则,用于管理并发访问状态的状态

如果一个对象的field都是由基本数据类型(int long等)组成的,则所有这些field就构成了对象的全部状态。

如果对象的field中还包含引用,则对象状态还要包括这些引用变量中的隐含数据。例如LinkedList中的Node。

为了方便后人阅[......]

继续阅读