Java多线程学习笔记
2015-06-15 10:21
381 查看
进程和线程的概念
进程:程序(任务)的执行过程。
持有资源(共享内存,共享文件)和线程
线程:系统中最小的执行单元。
同一进程中有多个线程。
线程共享进程的资源。
线程的交互:互斥/同步
Java语言对线程的支持示意图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/10/acf3119030e72bb7c1912200b9e2fa21)
Thread常用方法:
线程的创建:Thread(String name) / Thread(Runnable target)
线程的方法:
启动线程:void start()
线程休眠:void sleep(long millis)
使其他线程等待当前线程终止:void join(long millis)
当前运行线程释放处理器资源:void yield()
获取当前线程引用:static Thread currentThread()
停止线程的方法:
stop方法(不推荐)
使用退出标志位(推荐)
interrupt方法(初衷:不是为了停止线程,而是中断线程)
线程的交互:互斥与同步
互斥的实现:synchronized(intrinsic lock)
同步的实现:wait()/notify()/notifyAll()
总结:
创建线程的三种方式对比:
1.采用实现Runnable,Callable接口的方式创建多线程
优势是:线程类知识实现了Runnable或Callable接口,还可以继承其他类
在这种方式下,多个线程可以共享同一个target对象,所以非常适合多个相同线程来处理同一份资源的情况。
劣势是:编程比较复杂,访问当前线程必须使用Thread.currentThread()方法
2.采用继承Thread类的方式创建多线程
优势是:编写简单,访问当前线程直接使用this即可。
劣势是:因为线程类已经继承了Thread类,所以不能再继承其他父类。
一般推荐采用实现Runnable接口,Callable接口的方式来创建多线程。
-
进程:程序(任务)的执行过程。
持有资源(共享内存,共享文件)和线程
线程:系统中最小的执行单元。
同一进程中有多个线程。
线程共享进程的资源。
线程的交互:互斥/同步
Java语言对线程的支持示意图:
Thread常用方法:
线程的创建:Thread(String name) / Thread(Runnable target)
线程的方法:
启动线程:void start()
线程休眠:void sleep(long millis)
使其他线程等待当前线程终止:void join(long millis)
当前运行线程释放处理器资源:void yield()
获取当前线程引用:static Thread currentThread()
停止线程的方法:
stop方法(不推荐)
使用退出标志位(推荐)
interrupt方法(初衷:不是为了停止线程,而是中断线程)
线程的交互:互斥与同步
互斥的实现:synchronized(intrinsic lock)
同步的实现:wait()/notify()/notifyAll()
总结:
创建线程的三种方式对比:
1.采用实现Runnable,Callable接口的方式创建多线程
优势是:线程类知识实现了Runnable或Callable接口,还可以继承其他类
在这种方式下,多个线程可以共享同一个target对象,所以非常适合多个相同线程来处理同一份资源的情况。
劣势是:编程比较复杂,访问当前线程必须使用Thread.currentThread()方法
2.采用继承Thread类的方式创建多线程
优势是:编写简单,访问当前线程直接使用this即可。
劣势是:因为线程类已经继承了Thread类,所以不能再继承其他父类。
一般推荐采用实现Runnable接口,Callable接口的方式来创建多线程。
-
相关文章推荐
- 取消Eclipse的自动代码格式化
- java join 原理 及其应用
- J2EE和Java EE
- SSH中各个框架的作用以及Spring AOP,IOC,DI详解
- 从源码总结struts2命名空间的匹配规则
- Java基础 泛型
- java代码覆盖率工具-Emma和Jacoco
- SVN myeclipse
- Ubuntu 14.04 java环境安装配置(不是openJAVA)
- java打地鼠游戏
- 浅谈Java转义符\\|
- myeclipse中如何配置jdk1.7
- Java EE中Service层中要不要捕获异常!
- Java生成不重复的数的方法
- 最常用的Eclipse快捷键
- Struts1配置文件总结
- EclipseLink/Features/JPA
- Java 多线程编程
- eclipse操作快捷键
- Java核心API -- 5(包装类、BigDecimal、BigInteger)