1.什么叫线程
进程:进行中的程序
线程:轻量级的进程;程序里的顺序控制流,可以理解为程序里不同的执行路径
线程体为run()方法(直接调用run()视为普通方法),启动线程为start()方法
2.线程的五种状态
创建:两种方式 继承Thread类,重写run()方法;实现Runnable接口,实现run()方法
就绪:调用Thread的start()方法(第二种实现接口方式使用静态代理)
运行:得到时间片,开始运行
阻塞:遇到阻塞事件
终止:线程死亡,严禁使用stop()方法,而应该定义一个boolean flag,并在run()方法中判断标志进行合理结束run()方法进而结束线程。
3.线程常用方法
Thread.sleep():线程睡眠,参数为当前线程的睡眠毫秒数。(静态方法)。抱着锁睡觉
join():线程合并,将当前线程与该线程合并,等待该线程终止
yield():线程让步,让出CPU
wait():线程等待,当前线程进入wait pool 线程等待池。放弃锁等待
notify()/notifyAll():线程唤醒,唤醒等待池中的一个/所有线程
4.线程同步
对象互斥锁:synchronized(obj) 保证同一时刻只能有一个线程访问该对象,从而保证了共享数据的操作完整性。
同步一般分为两类(注意死锁问题):
同步方法
public synchronized void fun1(){}
同步块
synchronized(this){}
解决线程死锁的问题最好只锁定一个对象,不要同时锁定两个对象
经典的生产者消费者模型
时间: 2024-10-12 16:22:21