线程的总结

线程

自定义的线程类需要继承 Thread 类  或者实现Runnable接口
并且重写run()方法
线程需要执行的任务写在run方法内
线程的开启需要调用线程对象调用  start 方法

Thread构造方法
public Thread() 创建新的线程
public Thread(String name) 创建自定义名称的线程对象
public Thread(Runnable target) 分配一个带有指定目标新的线程对象。
public Thread(Runnable target,String name)分配一个带有指定目标新的线程对象并指定名字。

getName()返回当前线程的名字
start()开启线程  并执行线程任务
run()执行线程任务  不会开启线程
sleep()线程休眠一会  毫秒值
currentThread()返回当前正在执行的线程对象
start开启线程并且调用run方法
继承Thread 类  不适合资源共享  
实现Runnable 接口容易实现资源的共享
接口可以降低代码的耦合性
! 线程池只能放入实现Runnable或Callable类线程,不能直接放入继承Thread的类。

线程的同步(线程间的通讯)

多条线程操作同一个资源的时候  容易出现安全问题
要对线程进行同步
用synchronized来解决
同步代码块
Synchronized(同步锁){
需要进行同步的代码;
(操作同一个资源的线程需要使用同一个锁对象,
锁对象可以是任意的一个对象,但必须是同一个)
}
同步方法
public synchronized void 方法名(){
   	可能会产生线程安全问题的代码;
(在run方法中调用此方法,同步锁为this)
}
static锁的线程锁是我们使用当前方法所在类的字节码对象(类名.class)。
锁机制
Lock localLock = new Lock();
localLock.lock();开启锁
localLock.unlock()释放锁

wait()
线程进入等待  并且释放锁  
再次执行需要等待时间过 或者  被notify唤醒
并且抢到锁

wait()与sleep() 的区别 
sleep() 不释放锁  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值