小编Big*_*c66的帖子

易失性hashmap的特征

我试图牢固地处理一个变量如何声明为

private volatile HashMap<Object, ArrayList<String>> data;
Run Code Online (Sandbox Code Playgroud)

会表现在多线程环境中.

我理解的是,这volatile意味着从主内存而不是从线程缓存中获取.这意味着如果正在更新变量,我将不会看到新值,直到更新完成并且我不会阻止,而是我看到的是最后更新的值.(这正是我想要的BTW.)

我的问题是,当ArrayList<String>线程B正在读取时,我在线程A中检索并添加或删除字符串时,volatile关键字究竟会受到什么影响?的HashMap唯一的或延伸到内容(K和V)的效果HashMap,以及?也就是说,当线程B获得ArrayList<String>当前正在线程A中修改的内容时,实际返回的内容是ArrayList<String>更新开始之前存在的最后一个值.

为了清楚起见,我们假设更新正在添加2个字符串.当线程B获得数组时,线程A中已添加一个字符串.线程B是否在添加第一个字符串之前获取数组?

java multithreading volatile

6
推荐指数
1
解决办法
2656
查看次数

奇怪而混乱的PHP语法

我正在接管一个旧网站的维护,并遇到了这种令人困惑的语法,用于处理我以前从未见过的表单,我不确定它的作用:

foreach (array('address','comments','country','email','mail_content','name','title') as $vuln) 
{
    isset($_REQUEST[$vuln]) and $_REQUEST[$vuln] = htmlentities($_REQUEST[$vuln]);
    isset($_GET[$vuln]) and $_GET[$vuln] = htmlentities($_GET[$vuln]);
    isset($_POST[$vuln]) and $_POST[$vuln] = htmlentities($_POST[$vuln]);
    isset($$vuln) and $$vuln = htmlentities($$vuln);
}
Run Code Online (Sandbox Code Playgroud)

它是"和",它让我 - 我把它读作"如果设置变量将其转换为htmlentities,但为什么那里有"和"?

最后,最后一行做了什么?

isset($$vuln) and $$vuln = htmlentities($$vuln);
Run Code Online (Sandbox Code Playgroud)

php

4
推荐指数
1
解决办法
119
查看次数

标签 统计

java ×1

multithreading ×1

php ×1

volatile ×1