13Java进阶——IO、线程 (3)

另一种方法来创建一个线程是声明实现类Runnable接口。 那个类然后实现了run方法。 然后可以分配类的实例,在创建Thread时作为参数传递,并启动

7.2.1 实现线程的方式一: 继承Thread类

为什么要重写run方法?

因为run方法是用来封装被线程执行的代码的。

run方和start方法的区别?

run()封装了线程执行的代码,直接调用的,相当于普通方法调用。

start方法 启动线程,然后由jvm调用此线程的run方法

7.2.2 实现线程的方式二: 实现Runnable接口

public interface Runnable

Runnable接口应由任何类实现,其实例将由线程执行。 该类必须定义一个无参数的方法,称为run

Runnable r = new MyRannable(); Thread t1 = new Thread(r);

t1.start();

或 new Thread(new Runnable(){@Override public void run(){sout;} }).start();

7.3 设置和获取线程的名称

Thread(name):有参构造,参数是线程的名字

th.setName(name);

Thread.currentThread();返回当前正在执行的线程对象的引用。

th.getName();

7.4 线程的优先级

th.getPriority();

th.setPriority(pri);

每个线程都有优先权。 具有较高优先级的线程优先于优先级较低的线程执行

线程的两种调度模型

分时调度: 所有线程轮流实现CPU的使用权,平均分配每个线程占有CPU的时间片

抢占式调度: 优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个。优先级高的线程获得CPU执行权的概率更高。

java是的是抢占式的调度模型。

线程的默认优先级为5,线程的优先级的范围为1(小)--10(大)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjzwz.html