多线程的知识点
1.并发与并行🎊
并发:
指两个或多个事件在同一个时间段内发生。
并行:
并行:指两个或多个事件在同一时刻发生(同时发生)
2.线程与进程🎊
进程:
- 是指一个内存中运行的应用程序,每个进程都有一个
独立的内存空间
,一个应用程序可以同时运行多个进程
;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建
、运行
到消亡
的过程。
线程:
线程的创建🎊
构造方法:
- public Thread() :分配一个新的线程对象。
- public Thread(String name) :分配一个指定名字的新的线程对象。
- public Thread(Runnable target) :分配一个带有指定目标新的线程对象。
- public Thread(Runnable target,String name) :分配一个带有指定目标新的线程对象并指定名字。
一些常见的方法:
- public String getName() :获取当前线程名称。
- public void start() :导致此线程开始执行; Java虚拟机调用此线程的run方法。
- public void run() :此线程要执行的任务在此处定义代码。
- public static void sleep(long millis) :使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)。
- public static Thread currentThread() :返回对当前正在执行的线程对象的引用。
wait()方法🎊
- wait方法的作用就是使当前执行的代码进行等待,wait()方法就是Object类的方法,该方法是用来将当前线程置入”预执行队列中”,并且在wait方法()所在的代码处停止执行,直到接到通知或被中断中止
- wait方法只能在同步方法中或同步块中调用。如果调用的wait时,没有持有适当的锁,会抛出异常。
- wait()方法执行后,当前线程释放锁,线程与其它线程竞争重新获取锁
notify() 方法🎊
notify方法就是使停止的线程继续运行
- 方法notify()也要在同步方法或同步块中调用,该方法是用来通知那些可能等待该对象的对象锁的其它线程,对其发出通知notify,并使它们重新获取该对象的对象锁。如果有多个线程等待,则有线程规划器随机挑选出一个呈wait状态的的线程。
- 在notify()方法后,当前线程不会马上释放该对象锁,要等到执行notify()方法的线程将程序执行完,也就是退出同步代码块之后才会释放对象锁。
查看线程的运行状态🎊
线程有六种状态分别是:新建、运行、阻塞、等待、计时等待和终止
实现思路:
创建一个类;ThreadState,实现Runnable接口
定义三个方法:
- waitForASecond():使当前线程等待0.5秒或其他线程调用notify()或notifyAll()方法
- waitForYears();使当前线程永久等待,直到其他线程调用notify()或notifyAll()方法
- notifyNow():唤醒由调用wait方法()进入等待状态的线程
代码实现:✨
1 | package cn.xiaowang.daily; |
1 | package cn.xiaowang; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 王同学的Blog!
评论
ValineDisqus