Kod*_*e47 2 java algorithm concurrency multithreading
我有一个多线程程序,其包括数据结构等等ConcurrentHashMap和ConcurrentLinkedList,但是我还需要每个线程访问共享整数值.线程本身是我做的扩展类的自定义线程类Thread.我的两个问题是:
如何让每个线程看到相同的整数值?我不认为原始int会起作用,因为它不会"通过引用传递"(或者更确切地说是通过对象指针的值传递).整数需要是可变的,并且所有其他线程都需要查看线程对一个整数的任何更改.使用整数对象会解决这个问题AtomicInteger吗?
我应该用什么来保护线程安全?每个线程都会在每次运行循环时检查整数,但是当线程完成任务并即将返回时,它将更改整数.
提前致谢!
你应该使用一个AtomicInteger.
然而,我会认为这AtomicInteger是一个相当低级的原语.我会质疑设计.你有没有考虑使用ExecutorService,Callable,Futures,Semaphore,CountDownLatch,在叉/加入从高层次的框架或其他类的java.util.concurrentAPI?