进程与线程总结:
1, 某个类,想具备多线程操作功能
(1) 继承Thread,则调用start()运行线程
(2) 实现Runnable,则先构造Thread类实例,再调用start()方法
2, 线程实例.run() 与 线程实例.start() 的区别:
直接调用run(),顺序执行
调用start(),本质上还是调用run(),并发执行
通过调用start()来启动线程
3, 使用 Thread类 与 Runnable接口 的接口 (最好使用Runnable接口)
使用Thread,不能实现资源共享
使用Runnable,可进行资源共享
4, Thread类 其实 就是Runnable 接口的子类
5, 线程的状态:
创建状态 : 线程已实例化 (等待CPU调度)
就绪状态 : 调用了start(), 等待CPU调度
运行状态 : 执行run() (遇到导致阻塞的事件,则进入阻塞状态)
阻塞状态 : 暂时停止执行,可能将资源交给其他线程使用 (阻塞解除后,回到就绪状态,等待CPU调度)
终止状态 : 线程执行完毕(即死亡状态)
6, Thread的基本知识点
a,常见的方法:
currentThread() :当前线程
isAlive() :判断线程是否启动
join :让一个线程强制运行,该线程运行期间,其他线程无法运行
sleep() :让线程暂时的休眠
yield() :将一个线程的操作,暂时让给其他线程来执行(线程礼让)
interrupt() :线程中断
setDaemon(on) :让线程在后台运行
b,如果程序没有为线程命名,则系统会自动为线程命名:thread-0,thread-1...
c,线程实例.run(),则当前线程的名称为:main ,即:主方法也是一个线程——主线程
d,每当java程序执行时,就会启动一个JVM,每一个JVM实际上就是在操作系统中启动了一个进程。
java运行时至少启动两个线程:main,GC(垃圾回收机制)
e,3种优先级:MAX_PRIORITY(10)、NORM_PRIORITY(5)、MIN_PRIORITY(1) 。
优先级越高,越容易先被执行。
主方法的优先级为:NORM_PRIORITY
7, 线程的休眠操作
8, 同步与死锁
死锁:表示互相等待,是在程序运行过程中一种表现状态
注:资源共享时需要进行同步操作
程序中过多的同步可能会产生死锁
10,线程的生命周期
创建: 通过 new Thread() 创建线程实例
运行: 调用start(),进入运行状态(在运行状态可以通过yeild()进行礼让后,继续执行)
暂停: 调用sleep()或wait()
销毁: 通过设置标志位boolean,结束线程 (run方法执行完毕,也表示结束线程)
注:
suspend():暂时挂起线程
resume():恢复挂起的线程
stop():停止线程
均已过时,不推荐使用。这些方法都会产生死锁
1, 某个类,想具备多线程操作功能
(1) 继承Thread,则调用start()运行线程
(2) 实现Runnable,则先构造Thread类实例,再调用start()方法
2, 线程实例.run() 与 线程实例.start() 的区别:
直接调用run(),顺序执行
调用start(),本质上还是调用run(),并发执行
通过调用start()来启动线程
3, 使用 Thread类 与 Runnable接口 的接口 (最好使用Runnable接口)
使用Thread,不能实现资源共享
使用Runnable,可进行资源共享
4, Thread类 其实 就是Runnable 接口的子类
5, 线程的状态:
创建状态 : 线程已实例化 (等待CPU调度)
就绪状态 : 调用了start(), 等待CPU调度
运行状态 : 执行run() (遇到导致阻塞的事件,则进入阻塞状态)
阻塞状态 : 暂时停止执行,可能将资源交给其他线程使用 (阻塞解除后,回到就绪状态,等待CPU调度)
终止状态 : 线程执行完毕(即死亡状态)
6, Thread的基本知识点
a,常见的方法:
currentThread() :当前线程
isAlive() :判断线程是否启动
join :让一个线程强制运行,该线程运行期间,其他线程无法运行
sleep() :让线程暂时的休眠
yield() :将一个线程的操作,暂时让给其他线程来执行(线程礼让)
interrupt() :线程中断
setDaemon(on) :让线程在后台运行
b,如果程序没有为线程命名,则系统会自动为线程命名:thread-0,thread-1...
c,线程实例.run(),则当前线程的名称为:main ,即:主方法也是一个线程——主线程
d,每当java程序执行时,就会启动一个JVM,每一个JVM实际上就是在操作系统中启动了一个进程。
java运行时至少启动两个线程:main,GC(垃圾回收机制)
e,3种优先级:MAX_PRIORITY(10)、NORM_PRIORITY(5)、MIN_PRIORITY(1) 。
优先级越高,越容易先被执行。
主方法的优先级为:NORM_PRIORITY
7, 线程的休眠操作
8, 同步与死锁
死锁:表示互相等待,是在程序运行过程中一种表现状态
注:资源共享时需要进行同步操作
程序中过多的同步可能会产生死锁
10,线程的生命周期
创建: 通过 new Thread() 创建线程实例
运行: 调用start(),进入运行状态(在运行状态可以通过yeild()进行礼让后,继续执行)
暂停: 调用sleep()或wait()
销毁: 通过设置标志位boolean,结束线程 (run方法执行完毕,也表示结束线程)
注:
suspend():暂时挂起线程
resume():恢复挂起的线程
stop():停止线程
均已过时,不推荐使用。这些方法都会产生死锁