.2 利用类成员变量实现
理论依据:
在上一章节中,利用线程本地变量(ThreadLocal)来实现线程中输入输出参数值共享,让方法的封装更复杂——需要从线程本地变量(ThreadLocal)读取和存储输入输出参数值。有没有一种更简单的方法,直接利用类成员变量实现输入输出参数值的共享呢?
答案是肯定的,可以把方法的封装和变量的定义封装到一个类中。这样,在每一个类实例中,都可以利用类成员变量来实现输入输出参数值的共享。但是,这个类是线程非安全的,必须在单线程中使用。
代码实现:
4.3 利用其它方法实现
除此之外,还可以利用其它返回值方法实现参数的输入输出功能:
利用数组实现
首先,在被调用方法中,定义一个对象数组,把多个返回值放入到对象数组中;最后,在调用函数中,把这些参数值从对象数组中取出来,并强制转化为对应的数据类型。
利用对象数组的问题是——代码可读性太差,而且在返回值的存入和取出过程中,需要进行数据类型的强制转化。如果所有返回值的数据类型一致,可以直接定义该类型的数组,从而避免了数据类型的强制转化。
利用Map实现
首先,在被调用方法中,定义一个对象Map,把多个返回值放入到对象Map中;最后,在调用函数中,把这些参数值从对象Map中取出来,并强制转化为对应的数据类型。
利用对象Map实现,代码的可读性比利用对象数组实现更强,但是也存在同样的问题——在返回值的存入和取出过程中,需要进行数据类型的强制转化。如果所有返回值的类型一致,可以直接定义该类型的Map,从而避免了数据类型的强制转化。但是,利用对象Map实现,还不如定义一个返回值类更实用。
五 利用类字段实现
本章将从类字段入手,实现参数的输入输出功能。
5.1 利用线程本地变量实现
线程本地变量(ThreadLocal):线程本地变量不同于它们的普通变量,因为访问某个变量的每个线程都有自己的局部变量,且独立于变量的初始化副本。线程本地变量实例通常是类中的私有静态字段,它希望将变量状态与某一个线程关联起来。
要用类字段解决参数的输入输出问题,就必须考虑方法的线程安全性。这里,利用线程本地变量(ThreadLocal)来实现线程中输入输出参数值共享。
(编辑:孝感站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!