线程不安全的写法
/** * @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; } }