- 学习并发首先要认识到一点:没有阻塞,并发毫无意义。并发解决的是多任务的并行问题。
- 进程:操作系统级别的资源消费者,独立地址空间; 线程:进程中的“子任务”,无法单独持有系统资源。
- 实现方式:
- 实现runnable接口
- 继承Thread
- Thread构造器(Thread t = new Thread(new XXX()))
- 这里是列表文本Executor方式
ExecutorService exec = new Executors.newCachedThreadPool(); exec.execute(new XXX()); exec.shutdown();
ExecutorService exec = Executors.newCachedThreadPool(); Futureft = exec.submit(new XXX());//XXX实现Callable接口 ft.get();//返回XXX的调用结果
- Exception处理类:Thread.UncaughtExceptionHandler接口的实现类可以用来处理线程运行中产生的异常
- ThreadFactory:对批量的Thread进行预订的设置
- 后台线程:所有非后台线程结束以后,不管后台线程运行到什么地方,JVM都会强制结束后台线程
- 线程协作:
- wait -> 挂起 -> notify/timeout -> 执行
- 同步(synchronized)
- 使用Lock和Condition
Lock lock = new ReentrantLock(); Condition condition = lock.newCondition(); lock.lock();//获得lock condition.await();//挂起任务 condition.signal();//唤醒condition上的任务 lock.unlock();//释放lock
- 原子类
- 线程安全的容器
collection |----List| |----LinkedList no synchronized| |----ArrayList no synchronized | |----Vector synchronized| |----Stack|----Set no synchronizedMap|----HashMap no synchronized|----HashTable synchronized
- 扩展: