Tag:

Thread.sleep等待超过预期

以下代码: long msBefore = System.currentTimeMillis(); //Thread.currentThread().setPriority(Thread.MAX_PRIORITY); try {Thread.sleep(200); } catch (InterruptedException e){} System.out.println(“Time: ” + (System.currentTimeMillis() – msBefore)); 印刷品: Time: 578 Time: 594 Time: 625 Time: 640 Time: 641 Time: 609 Time: 625 Time: 625 Time: 610 Time: 609 Time: 625 Time: 625 Time: 422 Time: 625 Time: 594 Time: 609 Time: 625 Time: 594 […]

仅使用不可变数据类型是否使Java程序线程安全?

如果我只使用不可变数据类型,我的Java程序是否可以线程安全? 任何其他因素都会影响线程安全吗? ****如果可以提供一个例子,将不胜感激。 谢谢!** **

Java中的不变性和同步性

自从我阅读了Java Concurrency in Practice一书后,我想知道如何使用不变性来简化线程之间的同步问题。 我完全理解不可变对象是线程安全的 。 初始化后它的状态不能改变,因此根本不可能存在“共享可变状态”。 但必须正确使用不可变对象才能在同步问题中被认为有用。 以这段代码为例,它描述了一家银行,它拥有许多账户,并且公开了一种方法,通过这种方法我们可以在账户之间转账。 public class Bank { public static final int NUMBER_OF_ACCOUNT = 100; private double[] accounts = new double[NUMBER_OF_ACCOUNT]; private Lock lock; private Condition sufficientFunds; public Bank(double total) { double singleAmount = total / 100D; for (int i = 0; i accounts[from]) { sufficientFunds.await(); } // Transferring funds […]

如何使用Thread Sleep暂停JUNG“animator”(给定IterativeProcess)?

我正在通过JUNG库为节点之间的移动agents (即JUNG节点)提供一个接口。 当我命令agent从节点1移动到节点2时 ,并且在代理到节点2的行程结束之前,我命令agent移动到节点1 。 我希望agent在到达节点2后移动到节点1但是代理slowed down (因为新命令降低其速度)并且当通过该降低的速度到达节点2时它以相同的降低的速度返回到节点1。 并且当存在命令代理移动到的Third点时(当它在跳闸forms节点1到节点2时 ),代理looses its path到节点2的 looses its path并且不到达节点2或3中的任何节点。 我知道发生这种情况是因为当一些thread正在moving the agent ,执行新命令的另一个thread应该以某种方式paused并且在另一个thread完成其工作之后应该resumed它。 我试过通过睡觉线程来做这样的事情,但它不起作用。 即使我睡眠线程,顶点对撞机仍然会改变节点位置。 我也试过使用semaphores但同样的事情发生了。 我怎么能完全阻止它? 这是我的代码的完整实现(The main part for moving the agents is the MOVE class) : InterpretMaster.java commandMaster.java Command.java Move.java: /* * To change this license header, choose License Headers in Project Properties. * To change […]

Spring mongoTemplate线程安全吗?

我定义了这个Bean: 我使用这个Bean实例化一个mongoOprations ,现在我想知道Spring mongoTemplate线程是否安全?

有没有办法迭代或复制Java ThreadLocal的所有值?

语境: static ThreadLocal threadLocalMyType = … 我想要的是说: for (ThreadLocalEntry e: threadLocalMyType.getMapLikeThing() { // Thread t = e.getKey(); // I don’t need the thread value right now, but it might be useful for // something else. MyType theMyType = e.getValue(); // […do something with theMyType…] }

如何进行延迟的非阻塞函数调用

我想调用具有一些延迟的HashSet的add函数,但不阻塞当前线程。 是否有一个简单的解决方案来实现这样的事情: Utils.sleep(1000, myHashSet.add(foo)); //added after 1 second //code here runs immediately without delay …

如何在没有实际执行的情况下测试ThreadLocal是否已初始化?

我想测试ThreadLocal是否已经初始化而没有实际初始化它。 当然,代码需要是线程安全的。 理想情况下我想要这样的东西: class TestableThreadLocal extends ThreadLocal { public boolean isInitialized() { … } } 但是我该如何实现这种方法呢? 编辑:动机:我已经将一个ThreadLocal子类ThreadLocal覆盖initialValue() 。 但是,我并不总是需要初始化,特别是因为它可能会导致多类加载器环境中的内存泄漏。 一个简单的测试可以帮助我编写代码以避免意外初始化。

如何知道java SE类或方法是否是线程安全的?

例如: static private DateFormat df = new SimpleDateFormat(); public static void format(final Date date){ for (int i=0;i<10;i++) new Thread(new Runnable(){ public void run(){ System.out.println(df.format(date)); } }); } 它记录的DateFormat类不是同步类,但如果我们只使用格式Method,它不能改变孔类的法定? 假设它被声明为私有,如何确保此代码是线程安全的? 修复此代码的最佳方法是什么?: 1_ Using a different instance for every Thread. 2_ Using a synchronized block.

multithreading中的静态变量

I found that declaring a variable as static makes no sense在multithreading中 I found that declaring a variable as static makes no sense 。 我认为,这是因为every thread has its own stack 。 这是唯一的原因吗? 我知道static variables should be used within synchronized block 。 但为什么?