线程不安全的写法
/**
* @Title: EE.java
* @Package com.th.test2
* @Description: TODO(用一句话描述该文件做什么)
* @author Aaron·Li
* @date 2017年8月31日 上午11:16:12
* @version V1.0
*/
package com.th.test2;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
/**
* @author Aaron·Li
* @date 2017年8月31日 上午11:16:12
*/
public class EE {
private String keywords;
private List<String> keys = new ArrayList<String>();
public String getKeywords() {
return keywords;
}
public void setKeywords(String keywords) {
this.keywords = keywords;
}
public List<String> getKeys() {
if (StringUtils.isNotBlank(keywords)) {
if (keys.isEmpty()) {
for (String s : keywords.split(" ")) {
if (!s.isEmpty()) {
keys.add(s);
}
}
}
}
return keys;
}
}
线程安全的先写法
/**
* @Title: EE.java* @Package com.th.test2
* @Description: TODO(用一句话描述该文件做什么)
* @author Aaron·Li
* @date 2017年8月31日 上午11:16:12
* @version V1.0
*/
package com.th.test2;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
/**
* @author Aaron·Li
* @date 2017年8月31日 上午11:16:12
*/
public class EE {
private String keywords;
private List<String> keys = new ArrayList<String>();
public String getKeywords() {
return keywords;
}
public void setKeywords(String keywords) {
this.keywords = keywords;
}
public List<String> getKeys() {
if (StringUtils.isNotBlank(keywords)) {
if (keys.isEmpty()) {
synchronized (keys) {
if (keys.isEmpty()) {
for (String s : keywords.split(" ")) {
if (!s.isEmpty()) {
keys.add(s);
}
}
}
}
}
}
return keys;
}
}