Thread相关基础

来源:互联网 发布:电脑没有usb打印端口 编辑:程序博客网 时间:2024/04/28 13:54

1、Thread的状态:

线程大概可分为5个状态,

1.创建状态(NEW),当Thread被New出来,还未调用start()方法之前;

2.就绪状态,当Thread对象调用start()方法之后;

3.运行状态(RUNNABLE),当Thread对象调用start()方法开启线程并在新线程中调用执行run()方法时的状态;

4.阻塞状态(BLOCK,WAITING,TIME-WAITING),当Thread调用sleep,wait等方法或者等待某个线程或函数释放锁;

5.死亡状态,当Thread运行结束或抛出异常之后;


2、start()和run()区别

start()只是启动一个新线程,然后在新线程中调用run方法,此时的线程就是处于运行状态了,

而run()只是在当前线程中调用run()函数。


3、Thread与Runnable的区别

Thread可以理解为线程对象,Runnable理解为任务对象。Runnable并不能开启一个新的线程,只能描述一个在线程中执行的任务,Thread才能开启一个新的线程。


4、实现多线程的三种方法

a)继承Thread,重新run方法

b)新建Runnable对象并将其传入Thread的构造方法

c)新建Runnable对象并将其代入线程池类


5、sleep与wait的区别以及对CPU占用率的影响

sleep是Thread类的方法,wait是Object类的方法

所有与锁相关的方法都定义在Object类中,所以如果线程当前是拥有对象锁的,sleep方法并不会释放对象锁,wait会释放对象锁

调用sleep方法OS对其的监控状态依然会保持,当指定时间过后又会自动恢复执行,调用wait方法会让该对象进入等待锁定池,只有其他线程执行notify或者notify all 才会重新进入对象锁定池准备获取对象进入运行状态

两种方法暂停线程都表示他们暂时不需要CPU执行时间,OS会将CPU执行时间分配给其他线程

0 0
原创粉丝点击