ExecutorService的未来任务并未真正取消

我将Futures从ExecutorService推送到哈希映射中。 之后,我可以在哈希映射中调用取消期货。 虽然结果是正确的,但后来我在Callable过程中命中了断点,好像Future cancel()没有效果。 我认为这可能是两个不同引用的情况(即使引用ID在断点时被列为相同),但是想知道某些专家是否可以插入。这是代码的样子: ExecutorService taskExecutor = Executors.newCachedThreadPool(); Map <String, Future> results = new HashMap <String, Future>(); Future future = taskExecutor.submit(new MyProcessor(uid)); results.put(uid, future); 我允许继续处理(这是一个在传入任务时提交任务的循环),稍后我可能会尝试通过调用此方法从外部源取消: public static synchronized boolean cancelThread(String uid) { Future future = results.get(uid); boolean success = false; if (future != null) { success = (future.isDone() ? true : future.cancel(true)); if (success) […]

Java中的函数覆盖 – 重载

覆盖和重载有什么区别?

使用Apache POI在Excel文件中获取列的名称

如何使用Apache POI在Excel文件中获取列名,以确保按预期排序列。

如何防止JAXB转义字符串

我有一个由XJC生成的对象,叫做Product 。 我想将product.currentPrice (a String)设置为£210其中£ 是货币符号(从系统的其他地方传入)。 麻烦的是,JAXB正在逃避我的&号,所以它产生&amp;#x00A3;210 。 我怎么做不这样做?

Java Annotations – 寻找RetentionPolicy.CLASS的示例

根据Java Annotation API: RetentionPolicy.CLASS注释将由编译器记录在类文件中,但在运行时不需要由VM保留。 RetentionPolicy.RUNTIME注释将由编译器记录在类文件中,并在运行时由VM保留,因此可以reflection性地读取它们。 我正在寻找“CLASS”保留政策的样本。 当我们需要使用此策略而不是RUNTIME策略时。

Log4j不会在JBoss 6 EAP下记录任何内容

我在这个主题上看到了几个问题,但由于它们与错误相关,我不认为这是重复的。 我的问题是我无法登录。我正在JBoss 6 EAP上部署.war,但是也没有记录错误。 在JBoss的/ log文件夹下还有一个名为my .war的文件,但它也是空的。 .war部署罚款和工作。 由于我使用的是Spring,我甚至无法看到它初始化它的上下文。 在Tomcat 7下使用相同的.war进行日志记录。 我创建了一个log4j.xml并将其放在我的WEB-INF / classes目录中(我也在/ WEB-INF中尝试过): 我正在使用log4j 1.2.17,Spring 3.1和JBoss 6 EAP。 任何帮助非常感谢,谢谢

我什么时候需要覆盖equals和hashcode方法?

可能重复: 在Java中覆盖equals和hashCode 如果我有 class A { int x = 1; } … A a1 = new A(); A a2 = new A(); a1.equals(a2); 如果我比较2个A的实例而没有覆盖equals方法,我会得到预期的结果吗?

使用Hibernate查询:冒号被视为参数/转义冒号

return sessionFactory.getCurrentSession(). createQuery(“FROM Weather WHERE city_id = :id AND date ” + “BETWEEN now()::date AND now()::date + (:days – 1)”). setInteger(“id”, city_id).setString(“days”, days).list(); 得到错误: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: : 如何在HQL中使用此语法? 基本上问题是我想在我的查询中使用冒号(:),但是当hibernate看到冒号时,它认为它是一个参数(:parameterName是HQL中参数的语法),正如你从我的2次使用中看到的那样( :id and :days )。 但是当我使用now():: date语句时,它是特定的postgreSQL语法,hibernate破坏了一切。

Rmi连接被localhost拒绝

我使用java rmi时遇到问题: 当我试图运行我的服务器时,我得到一个connectException(见下文)。 执行重新绑定方法时发生exception: Runtime.getRuntime().exec(“rmiregistry 2020”); MyServer server = new MyServer(); Naming.rebind(“//localhost:2020/RemoteDataPointHandler”, server); 当使用rmi:// localhost:2020 / RemoteDataPointHandler时,它也不起作用。 使用默认端口也不起作用。 我也尝试过使用127.0.0.1的ip-address,但效果相同。 我的运行时args: -Djava.security.policy=java.security.AllPermission 线程“main”中的exceptionjava.rmi.ConnectException:Connection拒绝主机:localhost; 嵌套exception是: java.net.ConnectException:连接被拒绝 at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:574) at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185) at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171) at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:306) at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source) 在java.rmi.Naming.rebind(Naming.java:160) 在be.fortega.knx.server.Main。(Main.java:25) 在be.fortega.knx.server.Main.main(Main.java:16) 引起:java.net.ConnectException:连接被拒绝 at java.net.PlainSocketImpl.socketConnect(Native Method) 在java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) 在java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) 在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) 在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:433) 在java.net.Socket.connect(Socket.java:524) 在java.net.Socket.connect(Socket.java:474) 在java.net.Socket。(Socket.java:371) 在java.net.Socket。(Socket.java:184) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22) 在sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128) at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:569) […]

Hibernate的会话线程安全吗?

我需要知道,Hibernate的会话是否是线程安全的。 但很明显,每个线程都会附加一个新会话来执行。 但我的问题是,如果在一个线程中我更新了一个实体的某个值,那么在同一时间执行期间会反映在其他线程中吗? 我的问题是当我从两个线程顺序触发更新时,值正确更新但是当我几乎完全触发更新时它就失败了。 例如。 现阶段的表。 ID NAME MARKS ——- ——— ——– 1 John 54 我想做的是: Student student = session.load(Student.class, 1); student.setMarks(student.getMarks() + 1); session.update(student); session.close(); 当我尝试在循环中运行上面的代码(例如10)时,表“student”中的“marks”值被正确更新,即值更新为64,这是正确的。 但是当我尝试在线程环境中运行相同的代码时,它会产生错误的结果。