小编bun*_*112的帖子

在测试中重现SimpleDateFormat非线程安全性

我有一个应用程序,它不时在日志中有这个堆栈跟踪:

java.lang.ArrayIndexOutOfBoundsException: 514
        at sun.util.calendar.BaseCalendar.getCalendarDateFromFixedDate(BaseCalendar.java:436)
        at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2081)
        at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:1996)
        at java.util.Calendar.complete(Calendar.java:1312)
        at java.util.Calendar.get(Calendar.java:1093)
        at java.text.SimpleDateFormat.subFormat(SimpleDateFormat.java:917)
        at java.text.SimpleDateFormat.format(SimpleDateFormat.java:824)
        at java.text.SimpleDateFormat.format(SimpleDateFormat.java:796)
        at java.text.DateFormat.format(DateFormat.java:314)
        at me.myself.i.Message.toString(Message.java:203)
        at java.lang.String.valueOf(String.java:2615)
        at java.lang.StringBuilder.append(StringBuilder.java:116)
Run Code Online (Sandbox Code Playgroud)

我认为这个问题可能存在于某些方面:

public class Message{
private transient DateFormat logDateFormat;
    @Override
    public String toString() {
        final StringBuilder result = new StringBuilder(getClass().getSimpleName());
        result.append("Time=").append(logDateFormat.format(new Date(getExpireTime())));     
        return result.toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为多个线程同时调用toString(),但我在本地机器上重现这个问题:

  @Before
  public void setUp() {
    message = new Message();
    pool = Executors.newFixedThreadPool(numOfThreads);
 }

  @Test
  public void multiThreadTest() {
        for (int i=0; i<numOfThreads; i++) {
            TestJob j = …
Run Code Online (Sandbox Code Playgroud)

java junit multithreading

3
推荐指数
1
解决办法
2849
查看次数

SwingWorker中的进度对话框

我有一个方法register(),需要很多时间才能完成.所以我把它放在了swingworker的doInBackGround()中.与此同时,我希望显示模态对话框并在其上具有不确定的进度条.

private void registerPopupItemActionPerformed(java.awt.event.ActionEvent evt) {                                                  
    // TODO add your handling code here:
    WaitDialog dialog = new WaitDialog(new javax.swing.JFrame(), true);
    dialog.addWindowListener(new java.awt.event.WindowAdapter() {


    });
    dialog.setVisible(true);
    SwingWorker worker = new SwingWorker() {

        @Override
        protected Object doInBackground() throws Exception {
            register();
            return 0;
        }
    };
    dialog.dispose();   
}
Run Code Online (Sandbox Code Playgroud)

但是一切都冻结了.在调试器中,我看到没有调用regester().我搞砸了哪里?任何帮助都会受到欢迎!谢谢 !

java concurrency swing multithreading swingworker

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

Hibernate - 如果属性不为null,如何获取属性?

A User是1比1 Car.但User并非总是如此Car.

query = session.createQuery("select u from User as u join fetch u.car");
Run Code Online (Sandbox Code Playgroud)

我只获得汽车用户.如何修改此查询以获取所有用户?

我正在使用fetch因为我在会话之外需要user.car,我这样做了吗?

谢谢.

java hibernate

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

Java swing:为JComboBox实现我的Comboboxmodel

我需要我的组合框才能拥有组织的简称.问题是我可以在下拉列表中看到组织名称,但实际上无法选择它.我的错误在哪里?

public class ToComboBoxModel extends AbstractListModel implements ComboBoxModel {
      private String selectedItem;

      private List<Organization> orgs;

      public ToComboBoxModel(List orgs) {
        this.orgs = orgs;
      }

        @Override
      public String getSelectedItem() {

        return selectedItem;
      }

        @Override
      public void setSelectedItem(Object newValue) {
            for (Organization o: orgs){
                if (newValue==o){
                    selectedItem=o.getShortName();
                    break;
                }
            }
      }

        @Override
      public int getSize() {
        return orgs.size();
      }

        @Override
      public String getElementAt(int i) {
        return orgs.get(i).getShortName();
      }
    }
Run Code Online (Sandbox Code Playgroud)

设定型号:

query =session.createQuery("from Organization where isMain = 0");
List orgs=query.list(); …
Run Code Online (Sandbox Code Playgroud)

java swing combobox

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

Hibernate - java.lang.OutOfMemoryError:Java 堆空间

我得到这个例外:

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2882)
    at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
    at java.lang.StringBuilder.append(StringBuilder.java:119)
    at java.util.AbstractMap.toString(AbstractMap.java:493)
    at org.hibernate.pretty.Printer.toString(Printer.java:59)
    at org.hibernate.pretty.Printer.toString(Printer.java:90)
    at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:97)
    at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:35)
    at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1114)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
Run Code Online (Sandbox Code Playgroud)

在此代码:

Query query = null;
        Transaction tx= session.beginTransaction();
        if (allRadio.isSelected()) {
            query = session.createQuery("select d from Document as d, d.msg as m, m.senderreceivers as s where m.isDraft=0 and d.isMain=1 and s.organization.shortName like '" + search + "' and s.role=0");
        } else if (periodRadio.isSelected()) {
            query = session.createQuery("select …
Run Code Online (Sandbox Code Playgroud)

java memory hibernate

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

Java swing:选择/取消选择JButton来模仿脉冲

我有一个电子邮件客户端,它收到新消息,带有传入消息的按钮开始做某事,直到用户点击它看到最新消息.

我试图通过选择,等待然后取消选择使按钮吸引注意力,但这没有任何作用!

 do{
        button.setSelected(true);
               Thread oThread = new Thread() {
                    @Override
                   public void run() {
                       synchronized (this) {
                           try {
                               wait(1000);
                           } catch (InterruptedException e1) {
                               e1.printStackTrace();
                           }
                       }
                       button.setSelected(false);
                   }
               };
               oThread.start();
        }while(true);
Run Code Online (Sandbox Code Playgroud)

java swing selection jbutton

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