摘要: 线程池在系统启动时即创建大量空闲的线程,程序将一个Runnable对象传给线程池,线程池就会启动一天线程来执行该对象的run方法 ,放run方法执行结束后,该线程并不会死亡,而是返回线程池中成为空闲状态,等待执行下一个Runnable对象的run方法还可以控制系统中并发的线程数量 1 package com.thread; 2 3 import java.util.concurrent.ExecutorService; 4 import java.util.concurrent.Executors; 5 6 public class ThreadPoolTest { 7 publi... 阅读全文
posted @ 2013-09-18 17:06 liutoutou 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 1、线程的协调运行Object类提供wait()、notify()和notifyAll()三个方法,不属于Thread类,这三个方法必须由同步监视器对象来调用 在同步方法和同步方法块中使用wait():导致当前线程等待,直到其他线程调用该同步监视器的notify()或notifyAll()方法来唤醒改线程,调用wait()方法的当前线程会释放对该同步监视器的锁定notify():唤醒在此同步监视器上等待的单个线程。如果有多个,任意选取其中一个,只有当前线程放弃对该同步监视器的锁定后(使用wait()方法),才可以执行被唤醒的线程notifyAll():唤醒在此同步监视器上等待的所有线程。2、使 阅读全文
posted @ 2013-09-18 16:41 liutoutou 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 1、同步代码块synchronized(obj){...} 括号里的obj就是同步监视器线程开始执行同步代码块前,必须先获得对同步监视器的锁定,执行结束后自动释放对同步监视器的锁定2、同步方法使用synchronized修饰的方法,无须显示指定同步监视器,同步方法的同步监视器是this1)不要对线程安全类的所有方法都进行同步,只对那些会改变竞争资源的方法进行同步2)单线程环境中使用线程不安全版本保证性能,多线程环境中使用线程安全版本3、释放同步监视器的锁定当线程进入同步代码块、同步方法后:下面几种情况会释放同步监视器的锁定:1)执行结束2)遇到break、return终止了该代码块、该方法的执 阅读全文
posted @ 2013-09-18 16:00 liutoutou 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 1、join线程当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join方法加入的join线程完成为止。2、后台进程任务是为其他的线程服务,如JVM的垃圾回收线程。如果所有的前台线程都死亡,后台线程会自动死亡调用Thread对象setDaemon(true)可将指定线程设置成后台线程,但其必须在start()方法之前调用3、线程睡眠:sleep当前线程调用sleep方法后进入阻塞状态,在其sleep时间段内,该线程不会获得执行的机会,即使没有其他可运行的线程,处于sleep中的线程也不会运行,因此sleep方法常用来暂停程序的执行4、线程让步:yield让当前正在 阅读全文
posted @ 2013-09-18 15:20 liutoutou 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 1、线程和进程:操作系统一般都支持同时运行多个任务,一个任务通常是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含多个顺序执行流,每个顺序执行流就是一个线程。进程是处于运行过程中的程序,并且具有一定的独立功能,是系统进行资源分配和调度的一个独立单位。线程是进程的执行单元,线程在程序中是独立的、并发的执行流。多个线程间共享进程资源。并发性:并发指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行并行性:并行指在同一时刻,有多条指令在多个处理器上同时执行2、线程的创建和启动1)继承Thread类创建线程类线程类不能再继承其他父类 1 public class Firs 阅读全文
posted @ 2013-09-18 13:58 liutoutou 阅读(239) 评论(0) 推荐(0) 编辑