线程的状态及常见方法总结

1.并发与并行

并发:同一个时间段内,多个事件同时发生。

并行:单位时间内,多个时间同时发生。

2.线程与进程

进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位,系统运行一个程序即是一个进程从创建。运行到消亡的过程。

线程:线程是一个比进程更小的执行单元,一个进程在其执行的过程中可以产生多个线程。

3.线程的创建

构造方法:

  • public Thread():分配一个新的线程对象。
  • public Thread(String name):分配一个指定名字新的线程对象。
  • public Thread(Runnable target):分配一个带有指定目标的新的线程对象。
  • public Thread(Runnable target.String name):分配一个带有指定目标新的线程对象并指定名字。

常见方法:

wait()方法:

1.wait方法的作用就是是当前执行的代码进行等待,wait()方法就是Object()类中的方法,该方法是用来将当前线程置入“预制行队列中”,并且在wait()方法所在的代码处停止执行,直到接到通知或者被中止中断。

2.wait方法只能在同步方法中或同步代码块中调用,如果调用的wait时,没有持有适当的锁,或抛出异常。

3.wait(0方法执行后,当前线程释放锁,线程与其它线程竞争重新获取锁。

join()方法:

a.jion()方法会使当前线程(主线程或者说调用a.join()的线程)进入等待池,并等待线程a执行完成后才会被唤醒,此时,并不影响同一时刻处在运行状态的其它线程。

notify()方法:

notify方法就是时停止的线程继续运行

1.方法notify()也要在同步方法或同步代码块中调用,该方法时用来通知那些可能等待该对象的对象锁的其它线程,对其发出通知notify,并使它们重新获取该对象的对象锁。如果有多个线程等待,则会随机挑选一个wait状态的线程。

2.在notify()方法后,当前线程不会马上释放该对象锁,要等执行notify()方法的线程将程序执行完,也就是退出同步代码块之后才会释放锁。

4.线程的运行状态:

在整个线程的生命周期中,线程的状态有以下6种:

  • New:新建状态,创建新的线程,此时尚未调用start()方法。
  • Runnable:运行状态,运行中的线程,已经调用start()方法,线程正在或即将执行run()方法。
  • Blocked:阻塞状态,运行中的线程,在等待竞争锁时,被阻塞,暂不执行。
  • Waiting:等待状态,运行中的线程,因为sleep() join()等方法调用,进入等待;
  • Timed Waiting:计时等待,运行中的线程,因为执行sleep(时间),join(时间)等方法,进入计时等待。
  • Terminated:终止状态,线程已终止,因为run()方法执行完毕。

sleep和wait的区别:

1.两者都可用于线程的中断执行。

2.wait()常用于线程之间的交互/通信,sleep()用于暂停线程的执行。

3.wait()方法释放锁,sleep()方法不释放锁。

4.wait()方法被调用后,线程不会自动苏醒,需要别的线程调用同一对象上的notify()或notifyAll()方法。sleep()方法执行完成后,线程会自动苏醒,或者可以使用wait(Long timeout) 超时后线程会自动苏醒。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值