Java多线程

线程3种实现方式:
        1.继承Thread类,实现run方法,start启动线程<--1.创建进程类(extends Thread) 2.重写run()方法 3.创建一个进程类的对象,然后调用 start()方法 启动线程-->
        2.实现Runable接口,实现run方法,需要Thread类来启动
        3.实现Callable接口,实现call方法,FutureTask激活 Callable,使用Thread类来启动

4种线程池的区别:
newCachedThreadPool     缓存线程池
    创建一个可缓存的线程池,如果线程池长度超过处理需要,可灵活回收空闲
    线程,若无可回收,则新建线程
    
newFixedThreadPool      固定线程池
    创建一个定义长线程池,可控制线程最大并发数,超出的线程会在队列中等待
    (线程池里只能存放初始化数量的线程)
    
newSingleThreadExecutor 单例线程池
    创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所
    有任务按照指定顺序(FIFO, LIFO,优先级)执行。
    
newScheduledThreadPool  任务计划线程池
    创建一个可定期或者延时执行任务的定长线程池,支持定时及周期性
    任务执行。
    (延时触发线程)
    
Lock锁(接口锁)和synchronized(关键字锁)的区别:
        

 1.synchronized:(关键字锁)// 自动锁       Lock:(接口锁)//手动锁 加锁 解锁 定时锁     

 2.synchronized: synchronized可对实例方法、静态方法和代码块加锁,相对应的,加锁前需要获得实例对象的锁或类对象的锁或指定对象的锁    Lock: 使用实现类构造对象

 3.synchronized:只能自动解锁     Lock:可以手动开锁 手动解锁 定点关锁
        
Sleep wait notify notifyall区别:
    Sleep:    Thread的方法 睡眠 不解锁
    wait:     Object的方法 等待 等待过程中解锁
    notify:   Object的方法      解锁 解一个锁
    notifyall:Object的方法      解锁 解所有锁
    
多线程的含义:
    1.与服务产生通信
    2.从运行的程序种分离出来的一个平行运行线(终止程序后台运行程序后续结果)(程序优化时使用)
 

 线程问题:
     同步问题:程序中有一个资源被多个访问者同一时间访问(两个人在同一毫秒抢同一张票)
      解决:加锁
        Lock锁(接口锁)
        synchronized(关键字锁)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

憨子周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值