JAVA_SE复习(多线程)

线程多线程

1.两种建立线程的方式都有自身的优势。spa

实现 Runnable 接口的优势:线程

从面向对象的设计观点看,Thread 类严格来说是一个虚拟CPU 的封装,所以只有要改变或扩展该CPU 模型的行为时才应该继承这个类。设计

继承Thread 的优势是:代码会获得简化。orm

继承Thread 的缺点是:Java 只容许单继承,若是已经继承了Thread 类,则不能再继承其余类例如JFrame,这使得一些状况下不得不采用实现Runnable 的方法。对象

2.线程的优先级继承

默认状况下,线程的优先级是5 也就是Thread.NORM_PRIORITY。值得注意的是,即便当您为一个线程(线程A)指定最高优先级,另外一个线程(线程B)指定最低优先级,运行程序的时候,线程A 也不是必定优先于线程B 执行的。线程的优先级只是代表在相同状况下,优先级高的线程有更大的概率抢占CPU接口

3. 线程的基本控制ci

A.sleep get

a.sleep 方法使当前线程(即调用该方法的线程)暂停执行一段时间,让其余线程有机会继续执行,但它并不释放对象锁。也就是若是有synchronized 同步块,其余线程仍然不一样访问共享数据。注意该方法要捕获异常。

b.即便当一个线程设置为最高优先级,当它调用sleep 会终止一段时间,低优先级的线程反而有机会先执行:

4.多线程的两种使用方式:

A.使用Runnable

构建一个Runnerable接口的实现类,类中实现它的run方法

new一个thread对象  runnerable对象做为参数放入其中

最后,thread对象.star();

B. 使用thread

构建一个thread的继承类,类中实现它的run方法

而后,利用多态性:Thread t1 = new MyThread1();

最后,thread对象.star();【t1.star()

5. join 方法

执行join方法的线程必须所有都运行玩才能运行其余的线程。

join 方法使调用该方法的线程在此以前执行完毕,也就是等待调用该方法的线程  执行完毕后再往下继续执行。注意该方法也要捕获异常。



相关文章
相关标签/搜索