小编use*_*465的帖子

如何在调用Join()之前停止返回线程

这纯粹是一个理论问题,因为我不确定引起这个问题的条件会很常见.

比方说,你有一个线程,你用它的启动方法启动:

Thread c = new Thread();
c.start();
Run Code Online (Sandbox Code Playgroud)

然后直接在线程上调用Join()方法来告诉你所处的方法,直到线程被执行继续.

c.join();
Run Code Online (Sandbox Code Playgroud)

是不是可能在调用join方法之前执行并完成线程,因此让方法不知道在继续之前它必须等待c完成?我想你可以在调用start()方法之前尝试调用join()方法,但是每当我在测试用例中尝试这个时,就会出现错误.

任何人都知道可能的解决方案,或者JVM是否处理它?正如我所说,我无法触发这种情况,但从理论上说它有可能......

java multithreading

7
推荐指数
2
解决办法
3787
查看次数

Springs BeanUtils.copyProperties() 对比 Apache Commons BeanUtils.copyProperties

试图在这里做一些简单的事情。获取一个 Entity 对象并将其同名属性复制到另一个 bean。

你可以用 Apache commons 做到这一点

org.apache.commons.beanutils.BeanUtils.copyProperties(source,target)
Run Code Online (Sandbox Code Playgroud)

但这里的问题是我们可能有一些特定于实体 bean 的属性(元数据,如 created、lastUpdated 等时间戳),我们不想复制到目标 bean 并且 Apache Commons BeanUtils 不支持忽略属性. 我被推向了 Spring BeanUtils 的方向

org.springframework.beans.BeanUtils.copyProperties(source,target,ignoreProperties)
Run Code Online (Sandbox Code Playgroud)

其中 ignoreProperties 是您要忽略的属性名称的字符串数组。现在的问题似乎是在执行此属性复制时,它会将源对象的属性设为 null!由于源对象是一个实体对象,当事务被提交时,我们会得到一个带有强制 id 字段的 HibernateException

org.hibernate.HibernateException: identifier of an instance {source} was altered from {originalId} to null
Run Code Online (Sandbox Code Playgroud)

任何人都知道解决这个问题的方法,或者您是否致力于使用其中一种?让我困惑的是为什么公地库不支持在复制时忽略属性,或者为什么 springframework BeanUtils 似乎执行剪切/粘贴而不是复制/粘贴。

java apache-commons apache-commons-beanutils spring-framework-beans

6
推荐指数
0
解决办法
6099
查看次数

将 lsof 退出代码重定向到变量

我正在尝试测试文件是否打开,然后对退出代码执行某些操作。目前是这样做的:

   FILE=/usr/local/test.sh
   lsof "$FILE" | grep -q COMMAND &>/dev/null
   completed=$? 
Run Code Online (Sandbox Code Playgroud)

有什么方法可以将退出代码直接推送到局部变量中,而不是将输出重定向到 /dev/null 并捕获“$”?多变的?

linux bash lsof

5
推荐指数
1
解决办法
1957
查看次数

如何使用Java的SimpleDateFormat来解析"GMT + 0100(BST)"给出的时区?

我有一个日期,其形式为:

Wed Aug 17 2011 09:57:09 GMT+0100 (BST) 
Run Code Online (Sandbox Code Playgroud)

并有一个过滤器,需要花费一定时间的格式.问题似乎是最后的时区,我在过滤器中放置的格式字符串似乎都不适用于这种类型的日期格式.

例如,

Wed Aug 17 2011 09:57:09 GMT+0100 (BST)
EEE MMM dd yyyy HH:mm:ss zZ?
Run Code Online (Sandbox Code Playgroud)

时区的一部分,不断抛出错误.

谁能告诉我在这些日期解析时区的正确格式是什么?

java parsing date-parsing simpledateformat

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

将类编组到XSD中:Anytype xml

我的问题是我有一个MessageList类,它包含Message项,定义如下:

<xsd:complexType name="MessageType">
    <xsd:sequence>
        <xsd:any/>
    </xsd:sequence>
</xsd:complexType>
<xsd:element name="Message" type="tns:MessageType"/>
<xsd:complexType name="MessageListType">
    <xsd:sequence>
        <xsd:element name="Message" maxOccurs="unbounded"/>
    </xsd:sequence>
</xsd:complexType>
<xsd:element name="MessageList" type="tns:MessageListType"/>
Run Code Online (Sandbox Code Playgroud)

我的消息类看起来像(我在这里省略了getter和setter)

public class Message
{
private String referenceId;
private String messageType;
private Timestamp createdTime;
private String transactionIdForeignKey;
private String xmlDetail;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试在我的servlet中封送这个类时,如:

         List<Message> retrievedMessages = new ArrayList<Message>();
         retrievedMessages.add(new Message);
         retrievedMessages.add(new Message);

         MessageListType messageListType = new MessageListType();
         for(Message message: retrievedMessages){
             messageListType.getMessage().add(message);
         }
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

[#|2013-04-25T16:43:40.434+0100|WARNING|sun-appserver2.1|javax.enterprise.system.stream.err|_ThreadID=188;_ThreadName=p: thread-pool-1; w: 76;_RequestID=40c6fe10-c12f-4d0b-8912-c960381910d7;|
javax.xml.ws.WebServiceException: javax.xml.bind.MarshalException
 - with linked exception:
[javax.xml.bind.JAXBException: class uk.co.test.test.audit.model.Message nor any of its …
Run Code Online (Sandbox Code Playgroud)

java xsd jax-ws marshalling

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