小编Lai*_*Lai的帖子

为什么我需要同步Collections.synchronizedList返回的列表

我在dos.oracle.com找到了这个

public static List synchronizedList(列表列表)

返回由指定列表支持的同步(线程安全)列表.为了保证串行访问,必须通过返回的列表完成对后备列表的所有访问.当迭代它时,用户必须手动同步返回的列表:

  List list = Collections.synchronizedList(new ArrayList());
      ...
  synchronized(list) {
      Iterator i = list.iterator(); // Must be in synchronized block
      while (i.hasNext())
          foo(i.next());
  }
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么我必须同步列表来迭代它,如果Collections.synchronizedList();它应该返回已经同步的列表?

我只是在两个线程中访问列表:一个线程只添加,另一个线程获取和删除.您建议在此方案中使用哪些其他类?

谢谢阅读.

java multithreading synchronization arraylist

19
推荐指数
1
解决办法
4625
查看次数

刷新 Eclipse 首选项页面的内容

谁能告诉我如何在修改父页面后刷新子页面?

...在子首选项页面的 createContents() 中,我正在监听对父项的更改:

ParentPlugin.getDefault()
    .getPreferenceStore()
    .addPropertyChangeListener(new IPropertyChangeListener()
    {
        public void propertyChange(PropertyChangeEvent event)
        {
            //REFRESH CHILD PLUGIN
        };
    });
Run Code Online (Sandbox Code Playgroud)

java eclipse eclipse-plugin

5
推荐指数
0
解决办法
446
查看次数

使用Java Swing进行线程化

我有一个摆动工作者,配置串口连接.这个过程需要不确定的时间才能完成,有时需要1分钟才能完成.

当用户在工作线程仍在配置时单击需要配置数据的按钮时,我的问题就出现了.

我想知道如果工作线程已经完成,如何执行用户的请求.如果工作线程还活着,我希望执行等到工作线程完成.

java swing multithreading swingworker

2
推荐指数
1
解决办法
165
查看次数

Java日历日期错误

谁能帮我理解为什么我得到不同的月份值

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");    
System.out.println(dateFormat.format(cal.getTime()) 
                   + "--" 
                   + cal.get(Calendar.MONTH));
Run Code Online (Sandbox Code Playgroud)

令人惊讶地显示

09/09/2012--8
Run Code Online (Sandbox Code Playgroud)

java calendar date simpledateformat

0
推荐指数
1
解决办法
1637
查看次数