![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java 语言
tmdpzc
这个作者很懒,什么都没留下…
展开
-
volatile和synchronized区别
1.volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。 2.volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的 3.volatile仅能实现变量的修改可见性,并能保证原子性;而synchronized则可以保证变...原创 2011-03-12 14:15:51 · 87 阅读 · 0 评论 -
StringBuilder 和 StringBuffer 的区别
StringBuffer (线程安全) StringBuilder (非线程安全) String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于...原创 2011-03-12 15:22:16 · 174 阅读 · 0 评论 -
Externalizable 和 Serializable
Serializable 序列化自动运行 Externalizable 在运行序列化,和反序列化的时候,会调用 writeExternal() and readExternal() methods.原创 2011-03-12 21:09:09 · 86 阅读 · 0 评论 -
java NIO 学习 聊天室程序 (1)
学习 java nio ,自己建立一个 nio的聊天室程序。 服务器采用单一线程 轮训,accept的所有端口。 首先定义一个接口,处理 SelectionKey 上的事件。 [code="java"] static interface NioHandler { /** * 处理{@link SelectionKey#OP_ACCEPT}事件 * *...原创 2012-11-29 09:15:47 · 105 阅读 · 0 评论 -
java NIO 学习 聊天室程序 (2)
有了Command 接口,我们可以定义一些命令: 这些命令也代表了一些基本的需求 [list] 1. @pub 向聊天室中发广播消息 2. @quit 退出聊天室 , 如果断线,聊天室可以自动将与客户端的连接断开 3. @listmember 查看聊天室中的所有人 4. @login username password 以用户名和密码登陆服务器 5. @regist us...原创 2012-11-29 09:35:56 · 113 阅读 · 0 评论 -
java NIO 学习 聊天室程序 (3)
LoginCmd: [code="java"] package com.tcl.chat.command; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.SocketChannel; ...原创 2012-11-29 09:44:09 · 92 阅读 · 0 评论