[总结] 第十四章 线程

Posted 取名字什么的最麻烦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[总结] 第十四章 线程相关的知识,希望对你有一定的参考价值。

线程

一个线程是进程内部的分支 。线程是共享一个进程的内存空间。\n

Thread 类 (线程)

1.写一个类继承Thread类,重写run();方法,\n

2.new 出这个类\n

3.调用这个类的start()方法,开启线程,该方法会为线程分配资源,然后自动调用this,run()方法,如果直接调用run方法不会报错,但只是普通的方法调用而已,并没有开启线程

第二种方式(如果一个类继承了一个父类):

runnable 接口,

1.写一个类实现runnable接口,重写run()方法。

2.先new 出这个类,在new 出thread 线程。

3.将线程接口传给thread 线程,再使用thread的start方法。

造成线程中断的五个状态:

1.z中断状态:cpu 执行其他线程没有执行本线程时,被执行的几率分为优先级(共10级),使用.setpriorty()方法

2.阻塞状态:由于输入输出造成的线程中断状态。

3.休眠状态:主动调用sleep()方法,给他一个毫秒数,在这个时间之后执行。

4.d等待状态:在object中的wait方法和notify 方法,等待和唤醒一般搭配使用。

5.挂起状态:强制将一个线程退出,yield()方法。

 

线程同步(synchronized)同步锁

当有时两个或多个线程可能会试图同时访问一个资源,在此情况下,数据可能会变的不一致,为了确保任何一个时间点共享的资源只被一个线程使用,便使用了“同步”,使用同步关键字 synchronized 作为标识。

t同步的第一种实现:

同步方法,在资源身上加同步关键字synchronized

t同步的第二种实现:在调用资源的线程上用synchronized 同步块,

列:synchronized (this.rs){
  this.rs.show(this.getName)();}

注意:包装类作引用类型传参时,会产生一个新的包装类对象,其效果与基本类型数据无异。\n

扩展:死锁

当两个线程同步同一资源两个功能,并且两个功能有相互依赖关系时。便成了死锁,这时便需要调用object的wait()和notify()方法。

以上是关于[总结] 第十四章 线程的主要内容,如果未能解决你的问题,请参考以下文章

JAVA-初步认识-第十四章-线程间通信-示例

201671010107 2016-2017-2 《Java程序设计》第十四章学习心得

JAVA-初步认识-第十四章-多线程(守护线setDaemon)

JAVA-初步认识-第十四章-多线程-停止线程方式-定义标记

JAVA-初步认识-第十四章-多线程-停止线程方式-interrupt

JAVA-初步认识-第十四章-线程间通信-等待唤醒机制