多线程

------------恢复内容开始------------

线程实现

1.继承Thread类

1) 定义子类继承Thread类。

2) 子类中重写Thread类中的run方法。

3) 创建Thread子类对象,即创建了线程对象。

4) 调用线程对象start方法:启动线程,调用run方法。

2.实现Runable类

1)  定义子类,实现Runnable接口。

2) 子类中重写Runnable接口中的run方法。

3)  通过Thread类含参构造器创建线程对象。

4) 将Runnable接口的子类对象作为实际参数传递给Thread类的构造器中。

5) 调用Thread类的start方法:开启线程,调用Runnable子类接口的run方法

优先选择:Runable方式

原因:

1.实现的方式没有类的单继承性的局限性

2.实现的方式更适合来处理多个线程有共享数据的情况

联系:public class Thread implements Runable

相同点:两种方式都需要重写run(),将线程要执行的逻辑声明在run()中

 线程安全:

1.方法:

1.1同步代码块

1.2.同步方法

1,3.Lock锁

2.syschronized与Lock异同:

不同:syschronized机制在执行完相应的同步代码以后,自动释放同步监视器

   lock需要手动启动同步(Lock()),同时结束同步也需要手动的实现(unlock())

3.优先使用顺序

Lock->同步代码块()

------------恢复内容结束------------

原文地址:https://www.cnblogs.com/dormant-valcano/p/13915147.html