JAVA多线程
来源:互联网 发布:python spark视频教程 编辑:程序博客网 时间:2024/06/03 11:49
1.线程的实现方式
1)继承Thread类
如果直接调用对象的run方法,这时底层资源并没有完成资源的创建和执行,仅是简单的对象调用。
而且使用run方法,是不可以并行,不可以交叉执行的,调用run方法执行的是main这个线程。
线程的并行,交叉执行,有随机性,哪条线程先执行没有定性,由CPU决定的。
如果想开启线程,需要去调用thread类中的另一个方法,start来完成;
此start做了两件事情:开启线程 ; 调用线程的run方法。
2)实现runable接口
子类覆盖接口Runable的run方法
通过thread类创建线程,并将实现了Runable接口的子类对象作为参数传递到thread类的构造函数
thread类对象调用start方法开启线程
2.两者的优缺点
避免了点继承的局限性,一个类可以继承多个接口
适合于资源共享
student继承person类,student想有runable方法,但person不需要有这个方法
3.线程的生命周期
4.同步代码块
多线程在执行的时候,可能会存在安全隐患,为了解决这个问题,引入了同步机制
syschronized
同步代码块
syschronized(obj){
}
但是,使用同步,每次都要进行标志位的判断,效率低
同步的前提:
1)同步需要两个或两个以上的线程
2)多个线程使用的是同一个锁
5.守护线程
QQ空间里背景音乐,你打开空间就开始放音乐,你把浏览器关了,它就跟着结束了,也不管音乐是不是放完了
setDaemon 将线程标记为守护线程或用户线程
isDaemon 测试该线程是否为守护线程
6.yield
暂停当前执行的线程,并执行其他线程,进入到就绪状态,并不是阻塞。停掉之后还是有机会去抢这个资源的。
7.线程的优先级
setPriority 更改线程的优先级
getPriority 返回线程的优先级
8.线程池
Executor.newCacheThreadPool() 缓存功能的线程池
Executor.newFixedThreadPool() 可重复,具有固定线程数的线程池
Executor.newSingleThreadPool() 单线程的线程池
Executor.newScheduledThreadPool()
Executor.newSigleThreadScheduledExecutor()() 创建只有一个线程的线程池,可以指定延迟后执行线程任务
9.线程安全
代码所在进程中有多个线程同时运行,而这些线程可能会同时运行这段代码,每次运行的结果和单线程运行的结果是一样的
10.一个线程运行时发生异常会怎样
如果异常没有被捕获,该线程就会停止执行
11.如何在两个线程间共享数据
可以通过共享对象,或者使用阻塞队列这样的结构
12.notify 和 notifyall 的区别
notify 不能唤醒某个具体的线程,所以只有一个线程在等待的时候它才有用武之地
notifyall 唤醒所有线程并允许他们争夺锁确保了至少有一个线程才能继续运行
13.堆和栈的区别
每个线程都有自己的栈内存,用于存变量,方法,对其他线程是不可见的;
堆内存,线程共用的区域
14.什么是线程池?为什么要使用线程池?
创建线程需要花费资源和时间,任务来了才创建线程,会导致响应时间长,而且进程能创建的线程数有限。
为了避免这些问题,程序启动的时候,就创建若干线程来响应处理,就被称之为线程池。
- 【Java多线程】多线程死锁
- Java 多线程
- java 多线程
- java多线程
- JAVA多线程
- java多线程
- JAVA多线程
- java多线程
- JAVA 多线程
- Java多线程
- java多线程
- JAVA 多线程
- Java 多线程
- Java 多线程
- java多线程
- Java 多线程
- Java多线程
- java 多线程
- 005_HTML制作炫酷登录界面(CSS精灵图、背景图片局部显示)
- UVa489 Hangman Judge
- 1968: [Ahoi2005]COMMON 约数研究
- Spring官网下载dist.zip的几种方法
- HDU 6209 The Intersection(二分)
- JAVA多线程
- javascript基本知识整理二
- 千万不要误用 java 中的 HashCode 方法
- 单例模式解析properties 配置文件
- 列表:一个打了激素的数组3
- 《deep learning》学习笔记(6)——深度前馈网络
- HDU 6196 happy happy happy(暴搜+剪枝+dp)
- QT学习-----综合
- Algorithms(四)Employee Importance