Java基础总结-线程
来源:互联网 发布:软件工程学的是什么 编辑:程序博客网 时间:2024/06/18 17:03
线程
1、线程的基本概念:线程是一个程序里面不同的执行 /*路径*/ (一个线程代表一条路径)
2、线程的创建和启动
1.继承 Thread 类 /*都需调用start方法,这样才可以使主线程和子线程并行运行*/
2.实现 Runnerable(只有一个run方法) 接口(推荐)
3、线程的调度和优先级 sleep/join/yield 方法
4、线程的状态控制
sleep/join/yield 方法
sleep方法:可以调用Thread的 /*静态*/方法,故sleep可以由类名直接调用:Thread.sleep(...)
join方法:合并某个线程(在main中执行的话,相当于直接调用某方法了,主线程和子线程不会并行)
join就是阻塞调用线程,直到该线程结束后,调用线程才能继续执行。该影响只存在于执行join方法的线程和调用该线程的线程之间
如 在t1线程中调用t2.join(),则需要t2线程执行完后t1方能继续执行
yield方法:让出CPU(只是一个时间片,并非之后不执行了),给其他线程执行的机会
设置优先级(优先级(1~10)默认为5) t1.setPriority(Thread.NORM_PRIORITY + 3);
5、线程同步
一个线程执行过程中,可能被另一个线程打断,则需锁定当前对象
synchronized (执行某个方法的过程中,锁定当前对象) 表明该对象在任一时刻只能由一个线程访问.
synchronized (this) {...} 或者 public synchronized void add(...) {};
死锁:a线程需要锁定了o1,还需锁定o2;b线程需要锁定了o2,还需锁定o1;a线程无法执行完,b线程也无法执行完,此时产生死锁现象
另外: wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。
/*如果对象调用了wait方法就会使持有该对象的线程把该对象的控制权交出去,然后处于等待状态。*/
如果对象调用了notify方法就会通知某个正在等待这个对象的控制权的线程可以继续运行。
如果对象调用了notifyAll方法就会通知所有等待这个对象控制权的线程继续运行。
sleep 和 wait 的区别: wait时别的线程可以访问锁定对象(sleep不可以)
/*另外:调用wait方法时必须锁定对象(需使用synchronized)*/
http://qifuguang.me/2015/10/23/wait-notify-notifyAll%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D/
- java基础--线程总结
- Java总结--线程基础
- Java基础总结-线程
- Java Thread线程基础总结
- java基础总结23-java线程1
- java基础总结24-java线程2(线程同步)
- Java并发总结(一):线程基础
- 黑马程序员-Java基础之多线程总结
- Java并发总结(一):线程基础
- Java基础之多线程知识点总结
- Java基础——线程总结
- Java基础总结之多线程(2)
- Java基础总结之多线程(1)
- java基础学习总结-----线程(一)
- Java基础学习总结——线程
- java基础学习总结—— 线程
- java基础阶段线程总结Thread
- 【Java基础总结】-集合与线程实现
- VS2013环境下配置OSG(3.4.0版本)
- 关注民生民情
- GUI——练习(列出制定目录内容)
- 浅谈算法和数据结构: 十 平衡查找树之B树
- POJ 1001 高精度算法
- Java基础总结-线程
- Android(0):创建一个安卓模拟器
- canvas画一个简单的红色矩形
- 在AVR中PIN的含义
- 关注国情民情,从身边做起
- 不等式数列 (动态规划)
- [编程题] 最大的LeftMax与rightMax之差绝对值
- 笔记:Redis
- 嵌入式Linux应用开发完全手册(二)GPIO