随笔分类 -  5 Multi-thread

摘要:概述1:三个新加的多线程包2:Callable 和 Future 接口3:新的线程执行架构4:Lockers 和Condition 接口5: Synchronizer:同步装置6: BlockingQueue 接口7:Atomics 原子级变量8:Concurrent Collections 共点聚集1:三个新加的多线程包 java.util.concurrent, 包含了常用的多线程工具,是新的多线程工具的主体。 java.util.concurrent.atomic, 包含了不用加锁情况下就能改变值的原子变量 比如说AtomicInteger 提供了add... 阅读全文
posted @ 2012-07-08 21:25 万法自然~ 阅读(246) 评论(0) 推荐(0)
摘要:1、使用多线程的场合: a. offloading time-consuming task。由辅助线程来执行耗时计算,而使GUI有更好的反应。(最常用) b. Scalability. 服务器软件常使用。在程序中产生多个线程,让多个CPU分担工作 c. Fair-share resource allocation。对负担较重的服务器设置请求最大个数,并对某些请求做优先处理 d. Simulations。线程用于仿真测试(???)2、线程如何同步 a. 使用事件(Event)来同步现程 b. 使用临界区域,控制线程对特定资源的独占式访问。 缺点是Critica... 阅读全文
posted @ 2012-03-11 14:02 万法自然~ 阅读(450) 评论(0) 推荐(0)
摘要:1、synchronized不能继承, 父类的方法是synchronized,那么其子类重载方法中就不会继承“同步”。2、构造两个线程之间实时通信的方法分几步:(1). 创建一个PipedWriter和一个PipedReader和它们之间的管道;PipedReader in = new PipedReader(new PipedWriter())(2). 在需要发送信息的线程开始之前,将外部的PipedWriter导向给其内部的Writer实例out(3). 在需要接受信息的线程开始之前,将外部的PipedReader导向给其内部的Reader实例in(4). 这样放入out的所有东西度可从i 阅读全文
posted @ 2012-02-13 16:27 万法自然~ 阅读(136) 评论(0) 推荐(1)
摘要:工作线程:public class SimpleThread extends Thread { private boolean isRunning; private GenericObjectPool pool; public boolean getIsRunning() { return isRunning; } public synchronized void setIsRunning(boolean flag) { isRunning = flag; if (flag) { this.notif... 阅读全文
posted @ 2012-02-08 21:39 万法自然~ 阅读(1297) 评论(0) 推荐(0)
摘要:线程池类: java.util.concurrent.ThreadPoolExecutor常用构造方法: ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime , TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler)参数说明: 1)corePoolSize: 线程池维护线程的最少数量 2)maximumPoolSize:线程池维护线程的最大数量 3)keepAlive.. 阅读全文
posted @ 2012-02-06 21:13 万法自然~ 阅读(2379) 评论(0) 推荐(0)
摘要:1、使用线程池的好处: 1、减少在创建和销毁线程上所花的时间以及系统资源的开销 2、如果不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及“过渡切换”2、什么情况下使用线程池? 1、单个任务处理的时间比较短 2、将需处理的任务的数量大3、Java中的线程池介绍:Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。线程池的类体系结构中比较重要的类:ExecutorService: 真正的线程池接口。ScheduledExecutorService ... 阅读全文
posted @ 2012-02-06 20:47 万法自然~ 阅读(301) 评论(0) 推荐(0)
摘要:进程:运行中的应用程序,一套顺序执行的指令,每个进程都有自己独立的内存空间。线程:并发执行的顺序流,一个进程包括多个顺序执行的流程,这些流程被称为线程。JVM就是一个进程,在JVM中分出线程,比如main()就是主线程。同时开辟并发执行的序列即多线程。线程是一个操作系统创建并维护的一个资源,对于单CPU系统来说,某一时刻只可能由一个线程在运行。一个Thread对象就表示一个线程。线程由三部分组成: 1)CPU分配给线程的时间片 2)线程代码(写在run方法中) 3)线程数据进程的数据空间独立;线程的数据空间共享,能充分使用CPU资源线程间通讯容易。共享数据就要加锁、解锁,会降低效率... 阅读全文
posted @ 2012-02-06 14:55 万法自然~ 阅读(159) 评论(0) 推荐(0)
摘要:来源:http://wenku.baidu.com/view/7a36f0db6f1aff00bed51e21.html 阅读全文
posted @ 2012-02-06 14:48 万法自然~ 阅读(258) 评论(0) 推荐(0)
摘要:Object类的方法:wait(), notify(), notifyAll()Thread类的方法:sleep(), yield(), join()1. Object类的方法:wait(), notify(), notifyAll() 用于协调多线程对共享数据的存取,所以必须在Synchronized语句块内使用。 如果在其他地方调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException异常。wait() 使当前线程暂停执行并释放对象锁,让其它线程可以进入Synchronized数据块。 当前线程被放入对象等待池中。notify() 调... 阅读全文
posted @ 2012-02-06 14:46 万法自然~ 阅读(382) 评论(0) 推荐(0)