线程基本概念

进程:一个正在运行的程序拥有该程序运行的所有资源,包括资源的分配和任务的调度。

线程:在进程中负责具体代码的执行,一个进程至少有一个线程

单线程:在整个程序中只有一个线程,这个线程为主线程

多线程:整个程序不止一个线程,除了主线程其它为子线程

并发:多个任务独立执行,一起执行

同步:同一时刻只能执行一个任务,该任务执行完成之后才能执行下一个任务

异步:一个线程中多个任务同时执行,一起执行

多线程:操作系统同时执行多个任务
创建线程的方式:

         1)继承Thread,重写run()方法

              有开辟线程的能力,资源共享方面不是很方便。

        2)实现runable接口,实现该接口的run()方法

             没有开辟线程的能力,要将创建的对象交给指定线程来运行

线程池:

        帮助我们管理线程,我们只需要将需要执行的任务交给线程池。

  线程池会根据任务的个数,执行时长,将不同的任务交给线程池中的线程来执行。

线程死锁:

       多个线程因为竞争资源而造成相互等待,若无外力作用这些进程都将无法向

防止线程死锁:

        1)加锁顺序

        2)加锁时限

        3)加锁检验

线程锁:

       当多个数据访问资源时,为了数据安全,保证当一个线程访问资源时,

其它线程不能访问。等上一个线程访问完成之后才能访问。

同步锁:

synchronized(对象){
    //同步代码块: 同一个对象锁下的所有线程,某个时间段内只能有一个线程在执行该代码块
     }

在同步代码块内:

      wait():当前线程停止运行,被同一个线程锁的其它线程唤醒之后才能接着运行

      wait(时长毫秒):当前线程停止运行,当超过指定时长还没有被唤醒,就不等其它线程唤醒了,接着执行。

      notify(): 唤醒同一个同步锁中某一个wait()锁

      notifyAll(): 唤醒同一个同步锁中所有wait()线程

线程的生命周期:

        创建(new)---就绪(start)---运行状态(等待CPU调用run方法,如果线程在运行时发生阻塞,

进入阻塞状态,之后又返回就绪状态,等待CPU的再次调用)---结束状态(run方法执行完成)

run和start方法的区别:

      start:重新开启了一个线程,不必等待其它线程执行完成。

      run:只是调应了一个普通方法,没有开启线程,程序还会按照顺序执行响应代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值