这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战
今天继续~
线程的优先级
- 每一个线程都有一个优先级
- 线程的优先级是一个整数,取值范围为1-10
- 默认情况下,一个线程的优先级为5
- 高优先级的线程会比低优先级的线程更快的被分配资源
创建一个线程
- 实现Runnable接口
- 继承Thread
- 通过Callable和Future创建线程
Thread方法
start()
- 使该线程开始执行
run()
- 如果线程使用独立的Runnable对象构造的,则调用该Runnable对象的run()
,否则不执行任何操作直接的返回
setName(String name)
- 改变线程名称为name
setPriority(int priority)
- 更改线程的优先级为priority
setDaemon(boolean on)
- 将该线程标记为守护线程或用户线程
join(long millisec)
- 等待该线程终止的时间最长为millis毫秒
interrupt()
- 中断线程
isAlive()
- 测试线程是否处于活动状态
Thread静态方法
yield()
- 暂停当前线程对象,并执行其他线程
sleep(long millisec)
- 休眠指定的毫秒数
holdsLock(Object x)
- 当且仅当指定的线程对象保持监视器锁时,返回true
currentThread()
- 返回当前线程对象的引用
Stack()
- 将当前线程的堆栈打印至标准错误流
创建线程的三种方式对比
- 采用Runnable,Callable接口的方式创建多线程时,线程类还可以去继承其他类
- 使用继承Thread类的方式创建多线程时,编写简单,无需使用
Thread.currentThread()
,直接使用this即可获得当前编程
线程的几个主要概念
- 线程同步
- 线程间通信
- 线程死锁
- 线程控制:挂起、停止和恢复
多线程的使用
- 程序是并发执行而不是串行执行的,如果有两个子系统需要并发执行,这个时候就用上了多线程
- 通过对多线程的使用可以编写出高效的程序,但也不能创建太多的线程,否则会导致效率降低
- 上下文的切换开销很重要,如果拥有太多的线程,cpu花费上下文的切换的时间将多于线程执行的时间
今天就学到这里吧,下午了去把上面复习复习,午安~