进程:正在进行的程序。
线程:进程执行的路径。多线程可以在同一程序中实现多段代码同时交替运行。
创建线程的两种方法:
(一)继承Thread类
(1)继承Thread类
(2)覆写Thread类中的run方法(run方法中存储了线程中要运行的代码)
(3)调用线程的start方法(a.启动线程,b.调用run方法)
(二)实现Runnable接口
(1)定义类实现Runnable接口
(2)覆盖Runnale接口中的run方法(run方法中存储了线程中要运行的代码)
(3)创建实现Runnable接口的一个对象
(4)通过Thread类创建线程对象,将Runnable子类对象作为实参传递给Thread类的构造函数
(4)调用线程的start方法(a.启动线程,b.调用run方法)
线程安全问题:当多条语句在操作同一线程中的共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程就参与进来执行,导致共享数据的错误。对此提出线程同步。
线程同步的前提:
(1)必须有两个或两个以上的线程
(2)必须是多个线程使用同一个锁
线程同步的实现:
(1)同步代码块
表现形式:
Synchronized(锁对象)
{
需被同步的代码;
}
(2)同步函数
表现形式:
访问控制符 synchronized 返回值类型 函数名()
{
需被同步的代码;
}
下面是一个多线程卖票的例子:
线程间的通信:多个线程在操作同一个资源,但是操作的动作不同
下面以一个例子说明: