Java学习笔记1-多线程
2016-02-01 17:39
295 查看
1 、线程的创建
有两种方法,继承Thread类和实现Runnable或Callable接口2、线程的操作
join线程:等待被join线程执行完毕后台线程:为其他的线程提供服务
线程睡眠:进入阻塞状态
yield:让当前线程让步,让系统的线程调度器重新调度一下
3、线程池
ExecutorService对应的任务可以是实现Runnable接口或Callable接口。
CompletionService
对应的任务可以是实现Runnable接口或Callable接口。与ExecutorService相比,可以分别获取线程的返回值
ForkJoinPool
对应的任务是ForkJoinTask,分别有两个实现类,RecursiveTask和RecursiveAction。其中前者代表有返回值,后者代表无返回值
4、线程同步
线程同步解决多个线程同时执行,对同一资源的访问问题- 同步监视器
Synchronized同步块
synchronized同步方法
- 同步锁
lock
5、线程通信
线程通信用于不同线程之间的调度- 传统方法,使用Object的wait()、nofify()、nofityAll()
- 使用lock锁对应的Condition控制线程通信,对应方法有await()、nofity()、nofifyAll()
- 使用BlockingQueue阻塞队列控制线程通信,put(E e),take()
相关文章推荐
- java 生成随机数字+字母组合 和字母组合
- Java类型转换(int - byte[],float - byte[])
- Eclipse的使用:快捷键、设置、调试
- Java基础知识梳理
- java 深入理解异常处理机制
- 《java设计模式》之工厂模式
- Myeclipse通过表生成实体类和注解
- SpringMVC拦截器(资源和权限管理)
- java最常用的设计模式之一外观模式
- java向上转型和向下转型
- 详解Spring事件驱动模型
- java 内部类 InnerClass
- Java 异常
- 【spring】静态资源的访问受限解决方法
- 《java设计模式》之策略模式
- 解决java中中文传值出现乱码问题
- java中null与""的区别
- spring boot mybatis
- java.lang.RuntimeException:Unable to start activity ComponentInfo{com.meizu.beautify/com.my.viewc.Ma
- 深入理解Java遗传算法