一、线程的基本概念
1、进程2、线程
三级目录 二、Java实现线程的程序
1、java.lang.Thread类2、Thread类的方法3、java.lang.Runnable接口 三、线程安全
1、线程安全2、同步代码块3、同步方法 四、JDK新特性Lock锁
一、线程的基本概念 1、进程概念:应用程序运行的时候进入到内存中,程序在内存中占用的内存空间(进程)
2、线程线程:在内存和CPU之间,建立一条连接通路,CPU可以到内存中取出数据进行计算,这个链接的通路,就是线程
一个内存资源:一个独立的进程,进程中可以开启多个线程
并发:同一个时刻多个线程同时操作了同一个数据
并行:同一个时刻多个线程同时执行不同的程序
2、Thread类的方法实现线程程序的方法
1、定义类继承Thread类
2、子类重写方法run
3、创建子类对象
4、调用子类对象的方法start()启动线程
getName()返回线程名字,返回值是String类型
public class TheadName extends Thread{
public void run(){
}
}
public class getNameTest {
public static void main(String[] args) {
TheadName theadName = new TheadName();
System.out.println(theadName.getName());
}
}
静态方法:Thread currentThread()静态调用返回当前的线程对象
Thread thread = Thread.currentThread(); System.out.println(thread.getName());
3、java.lang.Runnable接口join()方法:执行join()方法的线程,他不结束,其他线程运行不了
静态方法:static yield()线程让步,线程把执行权让出
实现线程程序的步骤
三、线程安全 1、线程安全1、定义类实现接口
2、重写接口的抽象方法
3、创建Thread类对象
Thread类构造方法中,传递Runnable接口的实现类对象
4、调用Thread对象方法start()启动线程
线程安全:多线程操作一个资源,有可能出现安全问题
出现的原因:一个线程还没有结束,另一个线程就开始操作了
解决办法:
同步代码块可以解决线程安全问题:格式:synchronized ()关键字
synchronized (任意对象){
//线程操作的共享资源
}
任意对象:在同步中这个对象称为对象锁,简称锁(对象监视器)
同步代码块执行原理:
3、同步方法1、线程执行到同步时,判断锁是否存在
如果锁存在,获取到锁,进入到同步中执行
执行完毕,线程出去同步代码块,归还锁
2、线程执行到同步时,判断锁是否存在
如果锁不存在,线程只能在同步代码块外等待锁
当一个方法中,所有代码都是线程操作的共享内容,可以在方法的定义上添加同步的关键字synchronized,同步的方法,或者称为同步的函数
四、JDK新特性Lock锁同步方法中对象锁是this
静态同步方法中对象锁是:本类.class属性
JDK新特性:java.concurrent.locks包,定义了接口Lock
Lock接口代替了synchronized,可以更加灵活
Lock接口的方法
void lock()获取锁
void unlock()释放锁
Lock的实现类ReentrantLock
线程通信的方法wait(),notify()
1、方法的调用必须写在同步中
2、调用者必须是作为锁的对象
3、wait(),notify()为什么要定义在Object
同步中的锁,是任意对象,任意类都继承Object



