系统属性的范围

至少从阅读Properties方法的API规范后,我无法获得关于是否由JVM的所有实例共享系统属性的答案。

为了找出答案,我编写了两个快速程序,这些程序将使用相同的键但不同的值通过Properties设置系统属性:

class T1 {

public static void main(String[] s) {

System.setProperty("dummy.property", "42");

// Keep printing value of "dummy.property" forever.

while (true) {

System.out.println(System.getProperty("dummy.property"));

try {

Thread.sleep(500);

} catch (Exception e) {}

}

}

}

class T2 {

public static void main(String[] s) {

System.setProperty("dummy.property", "52");

// Keep printing value of "dummy.property" forever.

while (true) {

System.out.println(System.getProperty("dummy.property"));

try {

Thread.sleep(500);

} catch (Exception e) {}

}

}

}

(请注意,运行上面的两个程序将使它们陷入无限循环!)

事实证明,使用两个单独的Properties进程运行两个程序时,在一个JVM进程中设置的属性值不会影响另一个JVM进程的值。

我应该补充一点,这是使用Sun的JRE 1.6.0_12的结果,并且至少在API规范中没有定义此行为(或者我找不到它),行为可能会有所不同。

是否有任何工具可以监视运行时更改

据我所知。 但是,如果确实需要检查系统属性是否有更改,则可以一次保存Properties的副本,并将其与另一个对System.getProperties的调用进行比较-毕竟Properties是Properties的子类, 因此比较将以类似方式执行。

下面的程序演示了一种检查系统属性是否已更改的方法。 可能不是一个优雅的方法,但是它似乎可以完成它的工作:

import java.util.*;

class CheckChanges {

private static boolean isDifferent(Properties p1, Properties p2) {

Set> p1EntrySet = p1.entrySet();

Set> p2EntrySet = p2.entrySet();

// Check that the key/value pairs are the same in the entry sets

// obtained from the two Properties.

// If there is an difference, return true.

for (Map.Entry e : p1EntrySet) {

if (!p2EntrySet.contains(e))

return true;

}

for (Map.Entry e : p2EntrySet) {

if (!p1EntrySet.contains(e))

return true;

}

return false;

}

public static void main(String[] s)

{

// System properties prior to modification.

Properties p = (Properties)System.getProperties().clone();

// Modification of system properties.

System.setProperty("dummy.property", "42");

// See if there was modification. The output is "false"

System.out.println(isDifferent(p, System.getProperties()));

}

}

属性不是线程安全的吗?

Properties是线程安全的,因此我期望Properties也是这样,事实上,Properties类的API规范证实了这一点:

此类是线程安全的: 线程可以共享一个Properties 不需要外部物体 同步。,序列化表格

java设置属性的取值范围是多少_jvm-Java系统属性的范围相关推荐

  1. select html默认选中的值,HTML/jquery中的select标签设置默认选中取值

    一.jQuery中的select标签设置默认选中取值 每一次操作select的时候,总是要出来翻一下资料,不如自己总结一下,以后就翻这里了. 比如 1.设置value为pxx的项选中 $(" ...

  2. Java|Java中int的取值范围是多少

    Java 中 int 的取值范围是:-2^31 ~ 2^31-1 大致想一下,int 占 4字节,也就是 32 位,int 是有符号的,最高位为符号位.所以剩下31个位置. 那么我们大胆猜测一下,最大 ...

  3. Java中int的取值范围

    先上代码,通过下面代码的执行结果观察 public class Test {public static void main(String[] args) {// 2的31次方int j = (int) ...

  4. Java的byte类型取值范围为什么是负128到正127呢

    Java的byte类型取值范围是-128~127为什么负数是128正数到127呢 概念:java中用补码表示二进制数,补码的最高位是符号位,最高位为"0"表示正数,最高位为&quo ...

  5. java中random方法取值范围_Java中的Random()函数

    今天在做Java练习的时候注意到了Java里面的一个随机函数--Random,刚开始只是知道这个函数具有随机取值的作用,于是上网搜索了资料一番,做了一下一些关于Random函数的总结: Java中存在 ...

  6. HTML标记fort属性最大取值,CSS(2)---css字体、文本样式属性

    css字体.文本样式属性 这篇主要讲CSS文本属性中的:字体样式属性 和 文本样式属性. 一.字体样式属性 CSS 字体属性主要包括:字体设置(font-family).字号大小(font-size) ...

  7. Java中数据类型的取值范围

    整数数据类型的取值范围 我们都知道计算机的底层是二进制,也知道不同的整数类型存储值的范围不同,可这些数值在计算机底层是怎样存储的呢?数值范围又是怎么计算出来的呢? 下面以java来进行举例: byte ...

  8. 第四天 Java数据类型,数据取值范围

    首先我们来先了解Java数据类型.数据类型分为两大类:基础数据类型(普通的值) 引用数据类型(内存地址).那么我们来看,最典型的一个int,这个是×××,属于基础数据类型中的数值型.典型的class, ...

  9. java中random方法取值范围_java中最值的求法,你可能忽略了这种方法了!

    对一批数据进行排序,然后找出其中的最大值或最小值,这是基本的数据结构知识.在Java中我们可以通过编写算法的方式,也可以通过数组先排序再取值的方式来实现.下面以求最大值为例,解释一下多种算法. 自行实 ...

最新文章

  1. css:z-index
  2. hdu 1174:爆头(计算几何,三维叉积求点到线的距离)
  3. Java设计模式学习之工厂模式
  4. 成功解决利用pandas的read_csv函数读取csv文件的时候出现中文乱码问题
  5. LeetCode 456. 132模式(逆序遍历+单调栈)
  6. 性能进阶:使用JMeter进行websocket测试
  7. [bzoj 1452] [JSOI2009]Count
  8. Node.js:Webpack
  9. noip2013day1模拟赛
  10. 中国大学生学习与发展追踪研究(2007年至今)与中国综合社会调查(2003-2017年)与中国社会状况综合调查(2006-2019年)
  11. Tomcat 开启APR运行模式
  12. WebIM项目的架构设计以及实现
  13. 基于OpenCV的在图片上画刻度尺坐标、分划版、侧微尺、十字双边带刻度
  14. One Pixel Attack(对抗攻击) —— 使用差分进化算法寻找最优解
  15. Caffe:图像数据转换成ldb(leveldb/lmdb)文件
  16. L1-034. 点赞 团体程序设计天梯赛GPLT
  17. reflect存在的意义和使用api
  18. 百战RHCE(第十五战:Linux进阶命令十二-主机名和域名解析极简管理)
  19. 算法学习笔记之滑动平均滤波算法
  20. 二维码生成软件qrencode的安装与试用

热门文章

  1. c语言中指,浅析C语言中指与数组.doc
  2. python 创建子类_python创建子类的方法分析
  3. 解决Out of memory error (version 1.2-rc4 ‘Carnac‘ (298900 ... by android-jack-team@google.com)).
  4. android 使用adb远程调试
  5. mysql online ddl和pt_MySQL变更之:Online DDL 和 PT-OSC 该选谁?
  6. mysql 后10条_Mysql 保留最新的10条数据
  7. java服务器内存问题_java内存泄漏5种情况总结
  8. 软件工程--软件危机-生命周期-软件过程
  9. XML--XML从入门到精通 Part 1 认识XML
  10. (1)stm32开发之标准库的介绍