线程
来源:互联网 发布:淘宝联盟在哪里提现 编辑:程序博客网 时间:2024/06/05 20:43
【线程的基本概念】
1、线程是一个程序内部的顺序控制流。
通俗一点理解,线程是一个程序里不同的执行路径。
2、线程的启动必须调用Thread类中的start函数。
3、线程与进程的区别
1)、每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销。
2)、线程可以看成轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。
3)、多进程:在操作系统中能同时运行多个任务(程序)。
4)、多线程:在同一应用程序中有多个顺序流同时执行。
4、Java的线程是通过java.lang.Thread类来实现的。
5、VM启动时会有一个由主方法(public static void main(){})所定义的线程。
6、可以通过Thread的实例来创建新线程。
7、每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。
8、通过调用Thread类中的start()方法来启动一个线程。
【线程的创建与启动】
新线程的创建与启动有两种方式。
1、第一种
1)、定义线程类实现Runnable接口
2)、Thread myThread = new Thread( Runnable target )
3)、Runnable中只有一个方法;
public void run():用以定义线程运行体
4)、使用Runnable接口可以为多个线程提供共享的数据
5)、在实现Runnable接口的类的run方法定义中可以用Thread的静态方法:
public static Thread currentThread() 获取当前线程的引用
2、第二种
1)、可以定义一个Thread的子类并重写其run方法,如:
class MyThread extends Thread{
public void run(){......}
}
2)、然后生成该类的对象
MyThread myThread = new MyThread(...)
推荐:只要能用接口,就不要从Thread继承!!!!!
【线程控制的基本方法】
isAlive() //判断线程是否还“活着”,即线程是否还未终止。
getPriority() //获取线程的优先级数值。
setPriority() //设置线程的优先级数值。
Thread.sleep() //将当前线程睡眠指定毫秒数。
join() //调用某线程的该方法,将当前线程与该线程“合并”,即等待该线程结束,再恢复当前线程的运行。
yeild() //让出CPU,当前线程进入就绪队列等待调度。
【线程同步】
1、互斥锁:synchronized.
在执行某一方法过程中,当前对象被锁定。其他使用互斥锁的方法必须等待该方法完成后,才能使用互斥锁。
2、wait与notify
调用时使用 this.wait() 和 this.notify()
3、sleep与wait的区别
wait时别的线程可访问锁定的其他对象,调用wait方法时必须锁定该对象,sleep时别的线程也不可访问锁定的其他对象。
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- sharepoint 2016 学习系列篇(1)-关于sharepoint
- Java IO流之如何选择流对象总结
- Permutation Sequence
- CERC2014 Can't stop playing(一维2048)
- mysql多表连接
- 线程
- java中的XML(格式良好的xml文件)
- Java网络编程,UDP TCP
- Jacobi迭代求矩阵特征值和特征向量+C代码
- 多对多表的创建
- MMC卡知识
- TP 页面跳转success 和 error
- 第三章 Getting Ready to Tango
- CF卡知识