线程生命周期

来源:互联网 发布:德邦数据分析招聘信息 编辑:程序博客网 时间:2024/06/15 20:28

进程:程序执行的一个实例。
每个进程都会有自己独立的cpu空间。如此提高cpu的运行效率。
线程:所属于进程,每个进程中可以有多个线程。
创建线程的两种方法:
1.继承Thread类,重写run()。
2.实现runnable接口,实现接口中唯一的run()。(无start())
线程的启动是调用start()而不是run(),run()中包含所有进程所有代码。
详解:
A.extends Thread
Thread(Runnable target)
分配新的 Thread 对象
1.getName():获取线程名字:run()直接使用(父属性)
2.setName():
3.Thread.getCurrentThread():获取当前线程对象
4.Thread.getCurrentThread().getName():获取当前线程名称
5.setPriority():设置线程优先级
Thread.MAX_PRIORITY Thread.MIN_PRIORITY
Thread.NORM_PRIORITY
最高数值10,最小1,默认5.
注意:具体执行优先级还与代码顺序有关。
6.getPriority():得到线程优先级具体数值
7.sleep(long ms):让线程睡眠ms(毫秒)(转让CPU执行权),时间到了自动苏醒(继 续执行代码)
8.Interrupt():中断当前执行线程。如果有sleep线程则会被吵醒,并抛出sleep Interrupted *异常。
9.isInterrupt():判断是否收到中断信号
10.Jion():插队,只有jion的线程执行完其它才能执行。
B.implements Runnable
该类没有提供start(),所以启动线程只能借助Thread的start(),实例:
Thread t=new MyThread(Runnable的子类对象);
t.start(); 开启线程
常见用法:new Thread(new Runnable(){
@Override
Public void run(){
….
}
}).start();
特点:实现数据共享。
Thread 、Runnable区别:
1.Thread 需要子类继承,Runnable(接口)需要子类实现;
2.Thread 子类访问方法更加灵活(有start()),而Runnable只有run()(启动需要借助Thread子类的start())
3.Runnable子类可以继续继承,而Thread 子类不能再继承(java单继承特性)
4.Runnable可以实现数据共享,同时引发线程安全问题。Thread子类(忽略static)不能数据共享。
(Thread 实现共享的做法是给其属性增加static修饰符,避免在多次newthread对象的时候重复初始化想要共享的属性值。)
线程生命周期
1.创建:new()被调用
2.就绪:start()被调用
3.运行:run()被调用
4.阻塞:sleep()、wait()被调用
5.死亡:run()执行结束

0 0
原创粉丝点击