❶ java concurrent多线程
你那里不注释会出错吗?
//System.out.println("result:" + s);
❷ 为什么java.util.concurrent 包里没有并发的ArrayList实现
因为很难去开发一个通用并且没有并发瓶颈的线程安全的List。
像ConcurrentHashMap这样的类的真正价值(The real point / value of classes)并不是它们保证了线程安全。而在于它们在保证线程安全的同时不存在并发瓶颈。举个例子,ConcurrentHashMap采用了锁分段技术和弱一致性的Map迭代器去规避并发瓶颈。
所以问题在于,像“Array List”这样的数据结构,你不知道如何去规避并发的瓶颈。拿contains() 这样一个操作来说,当你进行搜索的时候如何避免锁住整个list?
另一方面,Queue 和Deque (基于Linked List)有并发的实现是因为他们的接口相比List的接口有更多的限制,这些限制使得实现并发成为可能。
CopyOnWriteArrayList是一个有趣的例子,它规避了只读操作(如get/contains)并发的瓶颈,但是它为了做到这点,在修改操作中做了很多工作和修改可见性规则。 此外,修改操作还会锁住整个List,因此这也是一个并发瓶颈。所以从理论上来说,CopyOnWriteArrayList并不算是一个通用的并发List。
❸ 求java并发编程的实例 java多线程编程例子
不懂……如果你是用线程同时去添加多个用户,第一,人不是多线程的,你只内能一个容个去添加;第二,如果你想添加用户的时候还没有添加完成又做别的事情,完成可能用面向对象思想,程序一块块执行的,对于编人员来说不用考虑到多线程,程序本身已经完成了,比如我点击了添加用户的按钮,你的程序还可以往下跑,因为你仅仅是new了一个添加用户的窗口,主程序可以继续向下执行,除非你玩模态对话;第三,如果你非要多线程添加用户,就用简单的线程例子能解决啊,public void run(){}方法里写上添加用户的代码就行啦,主程序运行时new 你写好的线程类(YouThread implements Runnable{public void run(...)}),启动它(new Thread(new YouThread()).start());之后写上自己要继续执行的代码
❹ java.util.concurrent的实现
ThreadPoolExecutor 和 ScheledThreadPoolExecutor 提供可调的、灵活的线程池。Executors 类提供大多数 Executor 的常见类型和配置的工厂方法,以及使用它们的几种实用工具方法。其他基于 Executor 的实用工具包括具体类 FutureTask,它提供 Future 的常见可扩展实现,以及 ExecutorCompletionService,它有助于协调对异步任务组的处理。
❺ java 并发实现原理: 是否可以利用多线程,实现10个并发执行 请给个例子(java代码),非常感谢!!!!
public static void main(String[] args) {
属for(Thread t:getThreads()){
t.start();
}
}
public static Thread[] getThreads(){
Thread[] thread = new Thread[10];
for(int i=0;i<10;i++){
final Integer num = new Integer(i);
thread[i] = new Thread(new Runnable(){
public void run() {
int j=5;
while(j-->0){
System.out.println("this is thread"+num);
}
}
});
}
return thread;
}
❻ 怎么用java做出一个concurrent programming
,这本书目前没有中文版,只有畅销书才有可能被译为中文,国人现在都比较浮躁,中文版的外籍书越来越少了。唉。
❼ java.util.concurrent的执行程序
接口Executor 是一个简单的标准化接口,用于定义类似于线程的自定义子系统,包括线程池、异步 IO 和轻量级任务框架。根据所使用的具体 Executor 类的不同,可能在新创建的线程中,现有的任务执行线程中,或者调用 execute() 的线程中执行任务,并且可能顺序或并发执行。ExecutorService 提供了多个完整的异步任务执行框架。ExecutorService 管理任务的排队和安排,并允许受控制的关闭。ScheledExecutorService 子接口添加了对延迟的和定期任务执行的支持。ExecutorService 提供了安排异步执行的方法,可执行由 Callable 表示的任何函数,结果类似于 Runnable。Future 返回函数的结果,允许确定执行是否完成,并提供取消执行的方法。
❽ 使用java 的concurrent的哪些组件
Executor框架为了更方便使用,提供了Executors这个工厂类,通过一系列的静态工厂方法,可以快速地创建相应的Executor实例。
只有一个nThreads参数的newFixedThreadPool方法会创建一个ThreadPoolExecutor,corePoolSize和maximumPoolSize都是nThreads,并且keepAliveTime为0表示不会设置过期时间,采用LinkedBlockingQueue作为工作队列
这个方法创建的ThreadPoolExecutor采用固定线程数nThreads,当线程少于nThreads时会为新的任务创建新的Worker工作线程,直到线程数达到nThreads。线程达到nThreads后不会回收。后续新建的任务会进入工作队列,工作队列是无界的。当任务量过大时,可能会因为无界的工作队列造成OOM的问题。
❾ java.util.concurrent中future的实现类有哪些
所有已知子接口:
Response<T>, RunnableFuture<V>, RunnableScheledFuture<V>, ScheledFuture<V>
所有已知实现类:
FutureTask, SwingWorker
❿ java.concurrent 包含的哪些类,它们的作用及原理
CopyOnWriteArrayList和CopyOnWriteArraySet是线程安全的集合,其中所有的修改线程对底层数组进行复制。当在这种集合上构建迭代器时,迭代器包含的是当前底层数组的引用。如果数组在迭代器构建后被修改,迭代器引用的仍然是旧数组。