线程与进程02
来源:互联网 发布:mac终端输入不了密码 编辑:程序博客网 时间:2024/04/29 09:57
线程与进程:
1. 一个应用程序生成一个进程, 但一个进程可以产生多个线程
2. 进程间通信非常麻烦, 但线程非常方便,线程之间通信使用通知机制,可以进行通信
3. 进程独享资源, 线程共享它所属的进程的资源
4. 进程结束,则这个进程所产生的线程也会销毁
java中线程的处理方式
1. 继承Thread类(外部类,匿名内部类)
class 子类名 extends Thread{
public void run(){
//这个新线程要执行的代码
}
}
2. 实现Runnable接口
线程的主要任务是处理耗时的操作.
线程的分类
1.主线程
2.精灵线程(又叫守护线程)setDaemon(true) 其它线程运行完成,则精灵线程也over 一般精灵线程使用在垃圾处理上
3.子线程
线程的属性
id name priority -> 优先级(1-10) ThreadGroup 线程组
如何控制Thread的运行
1.睡眠
静态方法. Thread.sleep()
有可能有异常. try{}catch(){}
睡眠后,线程会进入阻塞 -> 就绪状态 -> cpu.
2.优先级
3.join
在一个线程中调用另一个线程的join(),则当前线程阻塞,让另一个线程先执行后,当前才执行. 根优先级无关.
4.yield
yield与sleep的区别:
sleep给其它线程运行的机会,但不考虑其它线程的优先级;但yield只会让位给相同或更高优先级的线程;
sleep有异常, yield没有
当线程执行了sleep方法后,将转到阻塞状态,而执行了yield方法之后,则转到就绪状态;
5.synchronized(解决多线程操作一个资源时的数据不一致的问题.)
用法(使用在代码块上面或者使用在某一个方法上)
死锁
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁
死锁产生的四个条件(这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之
一不满足,就不会发生死锁)
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
生产者消费者(未完待续。。)
- 线程与进程02
- 进程与线程线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 线程与进程
- 线程与进程
- 进程与线程
- 进程与线程
- 线程与进程
- Codeforces #363 (Div. 2) D. Fix a Tree
- 线段树(区间和,最大值,最小值,区间动态更新查询)
- 交换整数的奇数位和偶数位
- linphone-NetworkManger.java文件分析
- Java 加载配置文件的方式 一
- 线程与进程02
- 华为OJ 初级:查找输入整数二进制中1的个数
- Hive入门--6.表的基本操作
- hdu 1525 Euclid's Game (博弈规律)
- 让activity的逻辑业务快速切换到fragment
- c语言学习(三)
- 有关继承,实现接口,子类,实例化对象之间总结
- 实验 FileUpload 笔记
- java反射获得父类泛型参数