创建线程的第一种方式:继承Thread类。
步骤:1、定义类继承Thread。2、复写Thread类中的run方法(目的:讲自己定义代码存储在run方法,让线程运行)。3、调用线程的start方法,该方法有另个作用:启动线程,调用run方法。
创建线程第二种方式:实现Runnab接口
Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个称为 run 的无参数方法。
创建线程的第二种方式:实现Runable接口
步骤:
1、定义类实现Runable接口
2、覆盖Runable接口中的run方法(将线程要运行的代码存放在run方法中)
3、通过Thread类建立线程对象
4、将Runable接口的子类对象作为实际参数传递给Thread类的构造函数
同步第一种方式就是同步代码块,或者同步函数。
synchronized(对象)
{
需要被同步的代码
}
同步第二种方式,1.5新特性Lock
Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition 对象。
Lock:替代了Synchronized
lock
unlock
newCondition()
Condition:替代了Object wait notify notifyAll
await();
signal();
signalAll();
|