小编Nat*_*hes的帖子

预增量运算符是否是线程安全的?

我正在用java制作一个相互竞争的汽车程序.每辆车都是一个单独的线程.

当汽车完成比赛时,每个人都称这种方法.我已经在不同的计时器速度下测试了该方法,它似乎工作正常.但我确实意识到每个线程都在访问变量carsComplete,有时是在同一时间(至少在date命令给我的范围内).

所以我的问题是:这个方法是线程安全的吗?

 public static String completeRace()
 {
      Date accessDate = new Date();
      System.out.println("Cars Complete: " + carsComplete + " Accessed at " + accessDate.toString());
      switch(++carsComplete)
      {
           case 1: return "1st";
           case 2: return "2nd";
           case 3: return "3rd";
           default: return carsComplete + "th";    
      }
 }
Run Code Online (Sandbox Code Playgroud)

java multithreading pre-increment

19
推荐指数
4
解决办法
8535
查看次数

何时使用ServiceLoader而不是OSGi之类的东西

作为对依赖性过敏的人,我什么时候会使用类似OSGi而不是内置的java 6 http://java.sun.com/javase/6/docs/api/java/util/ServiceLoader.html(我想要的)让插件罐子掉进去).

(仅供参考,这是一个scala应用程序,对任何建议持开放态度,ServiceLoader非常接近我想要的).

java osgi serviceloader

18
推荐指数
2
解决办法
4580
查看次数

检查变量是否为数组

我想知道变量是否是一个数组

  if (params.writtenLines == ???)
Run Code Online (Sandbox Code Playgroud)

非常感激.

grails groovy

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

为什么GORM没有保存我的对象?

如果我在Grails控制台中执行此代码:

def p = new Post(title: "T");
p.save(flush: true); // or p.save();

Post.count();
Run Code Online (Sandbox Code Playgroud)

GORM不会抛出任何异常,但数据不会保存在我的数据库中.我究竟做错了什么?

grails groovy grails-orm

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

如何在Hibernate查询中将Integer参数设置为null?

我有一个实体:

    @Entity
    @Table(name = "smsc.security_users")
    public class User {

        @Id
        @Column(name = "id")
        private int id;

        @Column(name = "username")
        private String username;

        @Column(name = "password")
        private String password;

        @Column(name = "enabled")
        private int enabled;

        @Column(name = "master_id", nullable = true)
        private Integer master_id;

        @Temporal(TemporalType.TIMESTAMP)
        @Column(name = "passwordExpiration")
        private Date passwordExpiration;

        public String getUsername() {
            return username;
        }
        ...
Run Code Online (Sandbox Code Playgroud)

我在说master_id.这是我的DAO方法:

public void add(String userName, String password, Integer master_id) {
        Session session = null;
        session = this.sessionFactory.getCurrentSession();
        Query query = …
Run Code Online (Sandbox Code Playgroud)

java hibernate

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

Log4J2 - 如何在单元测试中禁用日志记录?

我在我的应用程序中使用Log4J v2.0 Beta3进行日志记录,并且在运行单元测试时生成了日志消息.我检查了API以某种方式将日志级别设置为CRITICAL,但我找不到任何方法来更改记录器配置.

事实上,我在log4j2网站上看到了这个:

请注意,与Log4j 1.x不同,公共Log4j 2 API不会公开添加,修改或删除appender和过滤器或以任何方式操作配置的方法.

所以说.在单元测试中禁用日志记录的正确方法是什么?

java logging unit-testing log4j2

17
推荐指数
2
解决办法
6228
查看次数

如果运行该函数的线程被中断,finally块是否会执行?

如果我有一个带有try/finally部分的函数,并且运行它的线程在try块中被中断,那么finally块是否会在中断实际发生之前执行?

java multithreading interrupt try-catch interruption

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

如何制作累积序列?

假设我有一个如下的懒惰序列:

(def s (iterate inc 1))
(take 10 s)
=> (1 2 3 4 5 6 7 8 9 10)
Run Code Online (Sandbox Code Playgroud)

现在,我想生成一系列累积和,s如下所示:

=> (1 3 6 10 15 ...)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我尝试的是使用atom并累积总和(变异)这是产生累积序列的唯一方法还是有更好的方法来做到这一点?

注意:上述累积金额只是一个例子.源序列可以是其他序列.所以我不能使用公式:s(n) = n(n+1)/2

clojure cumulative-sum

17
推荐指数
1
解决办法
2085
查看次数

Scala案例类的最快序列化/反序列化

如果我有一个案例类的嵌套对象图,类似于下面的示例,并且我想将它们的集合存储在redis列表中,那么我应该看哪些库或工具可以提供最快的整体往返Redis的?

这将包括:

  • 是时候序列化项目了
  • 传输序列化数据的网络成本
  • 检索存储的序列化数据的网络成本
  • 时间反序列化回案例类

    case class Person(name: String, age: Int, children: List[Person]) {}
    
    Run Code Online (Sandbox Code Playgroud)

scala redis

16
推荐指数
2
解决办法
8936
查看次数

在自己的静态初始化程序中创建类的对象

根据JLS:

类或接口类型T将在第一次出现以下任何一个之前立即初始化:

T是一个类,并且创建了T的实例.

它也说,

类的初始化包括执行其静态初始化程序和类中声明的静态字段(类变量)的初始化程序

我从中推断出两点

  • 类初始化包括执行其静态初始化器
  • 如果实例化类,则会发生类初始化.

现在,

我假设当我在自己的(Test自己的)静态初始化程序中创建一个类Test的对象时,它应该抛出一个堆栈溢出,因为它应该重复调用自身,因为根据上面两点,类的实例化应该初始化类和初始化块具有类的实例化.当我在自己的构造函数或其自己的实例初始化程序中实例化类时,会发生堆栈溢出.

例如,

public class Test {

    static{
        System.out.println("static test");
        new Test();
    }
    {
       //new Test(); // This will give a stack overflow
        System.out.println("intializer");
    }

    public Test(){
        //new Test(); // This will give a stack overflow
        System.out.println("constructor");
    }
    public static void main(String[] args) {
    }

}
Run Code Online (Sandbox Code Playgroud)

然而,结果是不同的.

结果:

静态测试初始化​​构造函数

要么我太困惑了解课程的初始化,要么如果我在这里遗漏一些非常明显的东西并且感谢你的帮助,我会道歉.

java static language-lawyer

16
推荐指数
1
解决办法
1019
查看次数