- 浏览: 330042 次
- 性别:
- 来自: 南京
最新评论
文章列表
信号量Semaphore介绍
- 博客分类:
- java基础
java.util.Concurrent.Semaphore,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。java并发库的Semaphore可以轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过acquire()获取一个许可,如果许可用完线程阻塞,而release()释放一个许可。
Semaphore类似厕所有5个坑,假如10个人上厕所,只能同时进去5个,后面想进去必须要有人现出来。
另外如果出来一个人,那等待的人谁先进也有说法。如果调用构造方法Semaphore(num,true),那相当于5个人在外面排队,有人出来队头的先进去,这个排队先 ...
Serialization(序列化)是将对象以一连串的字节描述的过程;Deserialization(反序列化)是一种将这些字节重建成一个对象的过程。java序列化api提供一种处理对象序列号的标准机制。
java中,一切都是对象,在分布式环境中经常 ...
线程的interrupt
- 博客分类:
- java基础
一个朋友跟我说中断指的是中断线程的阻塞状态,应该是正确的,源码解释中并没有直接指出,但是都是在讨论不同阻塞情况下调用interrupt方法产生的后果。测试运行线程调用该方法也是无效果的
中止这个线程
由当前线程中 ...
内部类就是定义在一个类内部的类。定义在类中方法间的有两种情况:一种是普通内部类,一种是静态内部类。
普通内部类与外部类的关系可以总结为两点:
1.外部类的作用范围内可以任意创建内部类,即使内部类是私有 ...
1.选中要找的类名
2.按下快捷键ctrl+shift+R,默认会显示源文件.java的路径,如果没有.class的话,点击右上角的三角选中
show derived resource
3.双击.class文件
4.快捷键alt+enter 在resource里查看location就是了
要改的也很简单
window > Preferences > java > build path > source and output folder
TransportMetaData
- 博客分类:
- mina
元数据类,提供数据信息解释一个IoService,它的实现类DefaultTransportMetaData,提供了几个方法相关的私有属性以及一个包含所有参数的构造类
也就是这个类中所有参数只有一次赋值的机会,而且代码中限定所有参数不能为null
getProviderName:返回服务提供者的名字(如:nio,apr)
getName:返回服务名称
isConnectionless:如果是无连接服务则返回true
hasFragmentation:如果在这个服务中传输的信息能够分段或重新组合则返回true
getAddressType:返回 地址的类型
getEn ...
transient关键字
- 博客分类:
- java基础
transient 短暂的,临时的
java中一个对象只要实现了Serializable接口,这个对象就可以被序列化。但是如果你想要在序列化过程中规避掉某个成员变量,只要在该变量前添加关键字transient就行(对静态变量无效)
测试代码如下:
public class TransientTest
{
public static void main(String[] args) throws IOException, ClassNotFoundException
{
A a = new A(2, "a");
...
for(;;)和while(1)对比
- 博客分类:
- java基础
转自http://bbs.csdn.net/topics/310037252
一直知道for(;;)和while(true)都是无限循环,今天搜了下原理
while VS. for 在编程中,我们常常需要用到无限循环,常用的两种方法是while (1) 和 for (;;)。这两种方法效果完全一样,但那一种更好呢?让我们看看它们编译后的代码: 编译前 编译后 while (1); mov eax,1 test eax,eax
debug f8直接调到一下个节点
最近在测试项目对mina的使用,client传了4M也就是差不多4000000个字节,服务端接收后打印,然而毛都没有。
1.以为是控制台对打印长度做了限制,到Preference-->run/debug-->console 将limit console output前面的勾去掉,没效果
2.将fixed width console前面的勾点上,打印出来了
分析:没有点fixed width console控制台就不会自动换行,当文本超出宽度限制不就打印(纯属猜测)
IoSession
代表两个端口之间无视传输类型的连接的处理类
提供用户定义的参数,用户定义参数是会话相关的应用特定数据。它通常包含代表高等级协议状态的对象也变成在filters和handlers之间交换数据的一种方式
<调整传输类型的具体属性>
你可以简单向下转型session对象成一个合适的子类
<线程安全>
IoSession是线程安全的,但请注意同一时间调用多个write()方法会造成IoFilter的filterWrite(IoFilter.NextFilter,IoSession,WriteRequest)同时执行,因此必须保证使用 ...
本文转载自:http://blog.csdn.net/historyasamirror/article/details/6159248
所谓同步,简单的说,A告诉B去做某件事情,然后就一直等待,直到B做完后返回给A,A才继续做其它的事情;所谓异步,相反的,A告诉B做某件事情,然后就去干其它的事情了,B做完后再通知A。无论是同步还是异步,其实都是指两个对象之间的交互。所以,判断什么是同步还是异步,首先要先明确指的是哪两个对象之间的关系。举个例子:
[java] view plain copy
一张表就能讲清楚
Modifier | Class | Package | Subclass | World
————————————+———————+—————————+——————————+———————
public | y | y | y | y
————————————+———————+—————————+——————————+———————
protected | y | y | y | n
————————————+———————+—————————+——————————+ ...
Executor接口就一个方法void execute(Runnable command)
大致翻译下源码对类的注释
Executor对象用于执行提交的Runnable任务,这个接口提供了一种解藕提交上来的任务的运行方式(包括线程的使用,调度等)的方法。
Executor的使用主要用于替代直接明确的线程创建 比如:
相对于 new Thread(new (Runable Task())).start()这种为每个任务直接创建一个线程
Executor的处理方式是
Executor executor = new Executor();(实现)
executor.execut ...
volatile关键字
- 博客分类:
- java基础
Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。
volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatile关键字的场景。
以下是本 ...
多线程中yield和join的作用
- 博客分类:
- java基础
join的作用在源码中就一句话Waits for this thread to die
其实这句话有点不准确,它少了一个主语:父线程。完整的表述应该是parent thread waits for this thread to die。意思就是调用这个线程的父线程会处于阻塞状态知道这个线程执行完。比如:
public static void main(String[] args) throws InterruptedException
{
Thread thread = new Thread(new Runnable()
{
...