小编Kev*_*vin的帖子

转储java对象的属性

是否有一个库将以递归方式转储/打印对象属性?我正在寻找类似于Firebug中的console.dir()函数的东西.

我知道commons-lang ReflectionToStringBuilder但它没有递归到一个对象.即,如果我运行以下内容:

public class ToString {

    public static void main(String [] args) {
        System.out.println(ReflectionToStringBuilder.toString(new Outer(), ToStringStyle.MULTI_LINE_STYLE));
    }

    private static class Outer {
        private int intValue = 5;
        private Inner innerValue = new Inner();
    }

    private static class Inner {
        private String stringValue = "foo";
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到:

ToString $ Outer @ 1b67f74 [intValue = 5
innerValue = ToString $ Inner @ 530daa]

我意识到在我的例子中,我可以覆盖Inner的toString()方法,但在现实世界中,我正在处理我无法修改的外部对象.

java reflection dump properties tostring

63
推荐指数
5
解决办法
7万
查看次数

Java:在原语上同步?

在我们的系统中,我们有一个方法,当它使用某个ID调用时会做一些工作:

public void doWork(long id) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

现在,可以针对不同的ID同时完成这项工作,但是如果使用2个线程使用相同的ID调用该方法,则一个线程应该阻塞直到它完成.

最简单的解决方案是将Map从Long ID映射到我们可以锁定的任意对象.我预见到的一个问题是,我们可以在系统中拥有大量的ID,这个地图每天都会不断增长.

理想情况下,我认为我们需要一个系统,我们每个线程都会获取一个锁定对象,在可能的情况下锁定,完成工作,然后发出信号表明我们已完成锁定.如果很明显没有其他人使用这个特定的锁,那么请从锁定图中安全地将其删除以防止内存泄漏.

我想这一定是一个很常见的场景,所以我希望有一个现有的解决方案.有人知道吗?

java concurrency

16
推荐指数
3
解决办法
8265
查看次数

ScheduledThreadPoolExecutor和corePoolSize 0?

ScheduledThreadPoolExecutor如果没有工作要做,我想有一个也停止最后一个线程,并且如果有新任务则创建(并保持线程活动一段时间).但是,一旦没有更多的工作要做,它应该再次丢弃所有线程.

我天真地创建了它,new ScheduledThreadPoolExecutor(0)但结果是,没有创建任何线程,也没有执行任何计划任务.

任何人都可以告诉我,如果我能够实现我的目标而不用自己的包装ScheduledThreadpoolExecutor吗?

提前致谢!

java concurrency multithreading threadpool

15
推荐指数
4
解决办法
6184
查看次数

是否有更有效的方法来获得带注释的方法?

我开始了"为了好玩,没有人知道,没人关心"开源项目(LinkSet).

在一个地方,我需要获得一个类的注释方法.

有没有比这更有效的方法呢?我的意思是不需要遍历每个方法?

for (final Method method : cls.getDeclaredMethods()) {

    final HandlerMethod handler = method.getAnnotation(HandlerMethod.class);
        if (handler != null) {
                return method;
          }
        }
Run Code Online (Sandbox Code Playgroud)

java reflection

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

如何覆盖Spring bean定义但仍然引用重写的bean?

我正在尝试通过使用我的委托服务覆盖原始服务的bean定义来实现委托服务提供程序.但是,正如名称所暗示的那样,委托服务需要引用原始服务来委托调用.

我在使用原始bean def而不会遇到循环引用问题时,无法弄清楚如何覆盖bean定义.

例如:

<!-- Original service def in spring-context.xml -->
<bean id="service" class="com.mycompany.Service"/>

<!-- Overridden definition in spring-plugin-context.xml -->
<bean id="service" class="com.mycompany.DelegatedService"/>
    <constructor-arg ref="service"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

这可能吗?

java spring

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

如何在Linux上查看/更改套接字连接超时?

在Java中创建Socket时:

new Socket(host, port);
Run Code Online (Sandbox Code Playgroud)

Socket构造函数将在返回之前尝试连接到host:port.在Windows上,对于无法访问的主机,这几乎立即失败,但对于Linux,Socket最多可能需要5分钟才能超时.

我知道如果我可以控制创建套接字,我可以这样做:

Socket s = new Socket();
s.bind(..);
s.connect(.., timeout);
Run Code Online (Sandbox Code Playgroud)

但我宁愿让操作系统使用合理的默认值.有没有办法在Linux上更改此设置?

谢谢

java sockets linux timeout connect

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

Java多线程应用程序 - 如何动态取消Futures对象

我认为这是多线程Java应用程序的常见场景,因此我将尝试在此处进行描述.

在我的Java App中,我有一个threadExecutor对象,它定义了一个包含5个线程的Pool.

ExecutorService threadExecutor = Executors.newFixedThreadPool(5);
Run Code Online (Sandbox Code Playgroud)

一个sendCallables方法负责作业的列表分配给执行器.
我跟踪一个带有ObjectXList.通过这种方式,如果用户想要中断/取消线程,我可以引用Futures列表.像这样的东西:

Map<ObjectX, List<Future<String>>> map = new HashMap<ObjectX, Future<String>>();

public void sendCallables(ObjectX referenceObj, List<Callable<String>> list) {
    ...
    List<Future<String>> futureList = new ArrayList<Future<String>>();
    for(Callable<String> myCallableJob : list) {
        Future<String> future = threadExecutor.submit(myCallableJob);
        futureList.add(future);
    }
    ...
    map.add(referenceObj, futureList);
    ...
}

public void cancelFutures(ObjectX referenceObj) {
    ...
    List<Future<String>> list = map.get(referenceObj);
    for(Future<String> future : list) {
        future.cancel();
    }
    map.remove(referenceObj);
    ....
}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

现在有些情况下不再需要执行提交的任务了.
在这些情况下,应用程序应智能/自动地取消取消任务.
当用户会话到期时或者在执行所有作业之前特定流程(与提交的任务相关)结束时,可以在Web应用程序中找到此类情况的示例.

所以基本上我每次都需要调用cancelFutures(referenceObj),因为我的应用程序没有意义继续执行Jobs.我应该在应用程序需要调用它时识别每种情况. …

java multithreading future

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

你如何处理生成的代码?

处理生成的代码的好策略是什么?我们的一个项目使用Apache CXF的wsdl2java工具为一组wsdls生成JAX-WS存根.该代码应该如何处理?

我可以看到两个选项:

  1. 生成存根一次并将其存储在版本控制中.这样,您就不必处理IDE类路径问题,因为您的树(或附近)中有源文件.但是,除了诱惑某人使用生成的代码时,你在版本控制中还有很多混乱

  2. 每次在构建时生成存根.这颠倒了#1的优点/缺点,因为开发人员现在必须处理运行构建脚本并将生成的jar添加到他/她的类路径中.

我们选择了#2,因为类路径相关问题的烦恼似乎超过了#1中详述的问题.

其他人在做什么?有没有人有任何建议来简化这个过程?

java

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

如何制作一个jar文件?

如何从命令行和Netbeans 6.7制作一个jar文件?

java jar notepad++ netbeans6.7

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