小编孙兴斌*_*孙兴斌的帖子

为什么使用相同的时区获取不同的 localDate

java.sql.Date date = java.sql.Date.valueOf("1900-01-01");
org.joda.time.LocalDate localDate = new org.joda.time.LocalDate(date);
Run Code Online (Sandbox Code Playgroud)

基于上面的代码,我做了一些测试如下:

  • 问题 #1 为什么我会得到具有相同时区的不同 localDate 对象?

如果我将本地时区更改为UTC+8 Singapore Timezone,将会得到1899-12-31

如果我将本地时区更改为UTC+8 China Timezone,将会得到1900-01-01

  • 问题 #2 为什么我在不同的时区得到相同的时间?

如果我将本地时区更改为UTC-8 America/Los_Angeles Timezone,将会得到1900-01-01

如果我将本地时区更改为UTC+8 China Timezone,将会得到1900-01-01

有人可以帮忙澄清一下吗??它有点困惑。

java datetime date jodatime java-time

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

在java中检查两个BigDecimal的Multiple和模块

BigDecimal x = new BigDecimal(1.95);
BigDecimal y = new BigDecimal(0.65);

BigDecimal rem = x.remainder(y);
if (rem.compareTo(BigDecimal.ZERO) != 0.) {
    System.out.println("Not In mutilple of");
} else {
    System.out.println("In mutilple of");
}
System.out.println(rem);
Run Code Online (Sandbox Code Playgroud)

没有给出上述场景的正确结果.给定输入条件但如果它是第二个值的倍数则给出不正确的结果

java double bigdecimal

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

ThreadPoolTask​​Executor正常关闭

我正在使用Spring(v4)ThreadPoolTaskExecutor执行一些连续的可运行任务。当应用程序关闭时,我希望正常关闭执行器,以便任务有一些时间在继续关闭之前完成其迭代。如果活动任务在执行者等待时间到期之前(例如ThreadPoolTaskExecutor.setAwaitTerminationSeconds())完成了其迭代,则我不希望它开始另一个迭代。到目前为止,我还无法完成此任务。我有以下执行程序配置:

ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(10);
executor.setWaitForTasksToCompleteOnShutdown(true);     
executor.setAwaitTerminationSeconds(30);
Run Code Online (Sandbox Code Playgroud)

我的任务基本上是这样设置的:

    myExecutor.execute(() -> {
        while(true) {
            doSomething();
        }
    });
Run Code Online (Sandbox Code Playgroud)

我假设我需要在执行程序关闭时在线程中设置一个标志,以使循环中断。还有其他推荐的方法吗?

java spring multithreading interrupt executor

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

mvn编译之前是否需要执行mvn clean?

如果我想重新编译项目,我应该先执行 mvn clean 吗?

java maven

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

在Java中总结两个巨大的长

我写了这个方法,在arrayList中搜索是否有两个数字,它们总和等于变量elem.问题是变量的总和超过了long类型的维数.我怎么写呢?

public static boolean searchSum(ArrayList<Long> array, long elem) {
   int left = 0, right = array.size()-1;
   while (left<right) {
     long n1=Long.valueOf(array.get(left));
     long n2=Long.valueOf(array.get(right));
     if ((n1+n2)==elem) return true;
     else if ((n1+n2)<elem) left++;
     else right--;
   }
   return false;
 }
Run Code Online (Sandbox Code Playgroud)

java integer integer-overflow biginteger long-integer

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

如何按第二个单词对列表进行排序?

我有一个包含以下数据的集合:

John eats candy
Richard runs around in the morning
Hannah drinks water
Run Code Online (Sandbox Code Playgroud)

我将每个单词分开,将其添加到数组中并得到:

[John, eats, candy]
[Richard, runs, around, in, the, morning]
[Hannah, drinks, water]
Run Code Online (Sandbox Code Playgroud)

输出应该是(第二个单词按字母顺序排序)

[Hannah, drinks, water]
[John, eats, candy]
[Richard, runs, around, in, the, morning]
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

        List<List<String>> mainList = new ArrayList<>();
        List<String> list = new ArrayList<>();
        for (String s : array) {
            String[] x = s.split(" ");
            for (int i = 0; i < x.length; i++) {
                list.add(x[i]);
            }
            mainList.add(list);
            list = new ArrayList<>();
        }
Run Code Online (Sandbox Code Playgroud)

但我不知道接下来该做什么.如何实现元素的比较,并在此基础上更换线条.将字符串分成数组以访问第二个元素是否正确?即使你只是提出建议,我也会很高兴.

java sorting collections arraylist

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

可变关键字线程安全

在谷歌搜索了很多之后,我发现了 volatile 关键字的多个定义。

概念一:

一些网站说,它是线程安全的,因为线程作用于存储 volatile 关键字的主内存,并在不将其拉到线程堆栈空间的情况下对其进行修改。

概念2:

有人说,它不是线程安全的,因为它会导致线程竞争条件。由于,线程将 volatile 变量拉到堆栈空间,修改它并立即将其放回主内存。但是,在另一个线程之间可以对 volatile 变量采取行动并采取行动。因此,通过这种方式,某些值会丢失。

哪个概念是正确的?

java multithreading volatile

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

如何在java中找到2个时间戳之间的日差

我想计算两个时间戳之间有多少天的差异,但我不想考虑时间差异。

例如 :

long time1 = 1546258765000  (Mon 31 December 2018 13:19:25)
long time2 = 1546005915367 (Fri 28 December 2018 15:05:15)
Run Code Online (Sandbox Code Playgroud)

结果应该是 3, 3 天就过期了...由于时间原因,我从这个方法中得到了 2 天:

TimeUnit.DAYS.convert(time1 - time2 , TimeUnit.MILLISECONDS))
Run Code Online (Sandbox Code Playgroud)

我只需要为 time1 和 time2 设置相同的时间,然后返回时间戳并像这样计算......但我不确定最好的方法是什么。

java datetime

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

从scala中的String计算日期

您好我想使用LocalDateTime JAVA API将这些类型的字符串转换为日期.下面是输入字符串:"1672017",我想根据2017年的数字为167的日期转换为相应的日期.

请知道如何做到这一点

java datetime scala date java-8

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

将字符串转换为ZonedDateTime并更改TimeZone

我有这串 "Tue Apr 09 2019 12:59:51 GMT+0300"

我想转换成ZonedDateTime

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("EEE MMM dd yyyy HH:mm:ss OOOO");
ZonedDateTime zdt = ZonedDateTime.parse(a, dtf);
Run Code Online (Sandbox Code Playgroud)

转换为后ZonedDateTime,我想将时区从更改GMT+0300为其他时区。

我的第一个问题是parse。我得到:

DateTimeParseException: Text 'Tue Apr 09 2019 12:59:51 GMT+0300' could not be parsed at index 25(在GMT + 0300,我认为OOOO这是不对的,但我不知道这是什么)

之后,我不知道如何更改时区。

java datetime zoneddatetime

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