摘要:
类SimpleDateFormat主要负责日期的转换与格式化,但在多线程的环境中,使用此类容易造成数据转换及处理的不正确,因为SimpleDateFormat并不是线程安全的,我们看一段代码: 运行结果: ThreadName=Thread-5报错了 日期字符串:2000-01-06 转换成的日期为 阅读全文
摘要:
1.ReentrantLock概述 在java多线程中,可以使用synchronized关键字来实现线程之间同步互斥,但在JDK1.5中增加了ReentrantLock也能达到同样的效果,并且在扩展功能上也更加强大,而且使用上更加灵活。 使用ReentrantLock实现生产者消费者: 运行结果: 阅读全文
摘要:
1.join()方法介绍 join():使所属的线程对象x正常执行run()方法中的任务,而使当前线程z进行无限期的阻塞,等待线程x销毁后再继续执行z后面的代码。 join(long):等待一定时间。 在join过程中,如果当前线程被中断,则当前线程出现异常,但join所属的线程继续运行。 join 阅读全文
摘要:
介绍synchronized关键字之前有必要阐述一下线程安全的概念。“非线程安全”会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”,也就是取到的数据其实是被更改过的,如果是方法内部的私有变量不存在“非线程安全”的问题;而“线程安全”就是获得的实例变量的值是经过同步处理的 阅读全文
摘要:
1.volatile关键字使用: 多线程中存在私有堆栈中的值和公共堆栈中的值不同步的问题。什么意思呢?可能线程在一个地方修改了内存中变量的值,而其它地方线程却从私有堆栈中去读取不一致的变量值。关键字volatile 的主要作用是使在多个线程上可见。也就是,强制从公共堆栈中取得变量的值,而不是从线程私 阅读全文
摘要:
1.进程和线程的概念 进程:进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动;是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位;进程是受操作系统管理的基本运行单元。 线程:可以理解成是在进程中独立运行的子任务;使用多线程也就是在 阅读全文
摘要:
使用NIO编程的优点: 1.客户端发起的连接操作是异步的,可以通过在多路复用器注册OP_CONNECT等待后续结果,不需要像之前的客户端那样被同步阻塞. 2.SocketChannel的读写操作都是异步的,如果没有可读写的数据它不会同步等待,直接返回,这样I/O通信线程就可以处理其他的链路,不需要同 阅读全文
摘要:
TimeServer: TimeServerHandler: TimeClient: BIO主要的问题在于每当一个新的客户端请求连接时,服务器必须创建一个新的线程处理新接入的客户端链路,一个线程只能处理一个客户端连接。在高性能服务器应用领域,往往需要面向成千上万个客户端的并发连接,这种模型显然无法满 阅读全文
摘要:
一.安装Nginx依赖库 1.安装gcc g++的依赖库 2.安装pcre依赖库 3.安装zlib依赖库 4.安装ssl依赖库 5.安装Nginx 二.Nginx常用命令 1.启动Nginx 2.停止Nginx 3.Nginx重新加载配置 4.指定配置文件 5.查看Nginx版本 6.检查文件是否正 阅读全文