提供便利,呵呵
进程和线程的概念。
|--进程:正在运行的程序。
|--线程:一个执行单元,执行情景
2,jvm中的多线程体现。
|--主线程,垃圾回收线程,自定义线程。以及他们运行的代码的位置。
3,什么时候使用多线程,多线程的好处是什么?创建线程的目的?
当有多个任务需要同时进行时,目的:就是完成任务。
|--当需要多部分代码同时执行的时候,可以使用。
4,创建线程的两种方式。★★★★★
|--继承Thread
|--步骤1,重写父类run方法,创建线程,调用start方法启动线程
|--实现Runnable
|--步骤1,重写run方法,实例一个子类对象,创建线程对象将构造函数参数传入子类对象,启动线程
|--两种方式的区别?
第一种方式,耦合性过高,不利于器扩展性,子类对象既有任务自身还是一个线程对象,
第二种方式,降低了耦合性是任务和线程分离开
5,线程的5种状态。
对于执行资格和执行权在状态中的具体特点。
|--被创建:没有执行权,执行资格
|--运行:执行资格和执行权都具备。
|--冻结:释放了执行资格和执行权。
|--临时阻塞:有执行资格,但不具备执行权
|--消亡:run()结束
---------------------
6,线程的安全问题。★★★★★
|--安全问题的原因:多个线程操作共享数据,操作数据的代码有多条
|--解决的思想:按一个锁一线程执行时,不叫其他线程来执行。
|--解决的体现:synchronized
|--同步的前提:但是加上同步还出现安全问题,就需要用前提来思考。
|--同步的两种表现方法和区别:同步代码块和同步函数,前者锁可以是任意的后者锁是this.
|--同步的好处和弊端:解决了安全问题,同时降低了性能。
-----------------------
7,线程间的通信。等待/唤醒机制。
|--概念:多个线程,不同任务,处理同一资源。
|--等待唤醒机制。使用了锁上的 wait notify notifyAll. ★★★★★
|--生产者/消费者的问题。并多生产和多消费的问题。 while判断标记。用notifyAll唤醒对方。 ★★★★★
|--JDK1.5以后出现了更好的方案,★★★
Lock接口替代了synchronized
Condition接口替代了Object中的监视方法,并将监视器方法封装成了Condition
和以前不同的是,以前一个锁上只能有一组监视器方法。现在,一个Lock锁上可以多组监视器方法对象。
可以实现一组负责生产者,一组负责消费者。
|--wait和sleep的区别。★★★★★
wait()是可以定义时间。sleep()必须定义时间
8,停止线程的方式。
|--原理:控制循环,通过标识控制线程
|--表现:--中断。
|
|