多线程仨字不够长

1. 进程与线程  线程是进程中的一个执行单元

2.并发与并行   并发高效率成本高  并行只是提高cpu利用率

单核CPU:只能并发

多核CPU:并行+并发

3. 分时调度和抢占式调度

4.创建和启动多线程

继承Thread类  .start启动run方法

实现Runnable接口    创建Thread对象执行run方法任务

对Thread对象使用匿名内部类重写run方法

5.常用方法

  • public void run() :此线程要执行的任务在此处定义代码。

  • public String getName() :获取当前线程名称。

  • public static Thread currentThread() :返回对当前正在执行的线程对象的引用。

  • public final boolean isAlive():测试线程是否处于活动状态。如果线程已经启动且尚未终止,则为活动状态。

  • public final int getPriority() :返回线程优先级

  • public final void setPriority(int newPriority) :改变线程的优先级

6.线程优先级

  • MAX_PRIORITY(10):最高优先级

  • MIN _PRIORITY (1):最低优先级

  • NORM_PRIORITY (5):普通优先级,默认情况下main线程具有普通优先级。

7. 线程安全  

局部变量,   不同对象实例变量不共享    静态变量是共享的

相同对象的实例变量共享

抽取资源类,共享同一个资源对象

8.  同步机制

同步代码块         public synchronized void method(){
                                    可能会产生线程安全问题的代码
                            }
同步方法                synchronized(同步锁){
                                     需要同步操作的代码
                                }

9.等待唤醒机制

this.wait();

this.notify();

this.notifyall;

10.生命周期 

11.释放锁操作与死锁

面试题:sleep()和wait()方法的区别

(1)sleep()不释放锁,wait()释放锁

(2)sleep()指定休眠的时间,wait()可以指定时间也可以无限等待直到notify或notifyAll

(3)sleep()在Thread类中声明的静态方法,wait方法在Object类中声明

因为我们调用wait()方法是由锁对象调用,而锁对象的类型是任意类型的对象。那么希望任意类型的对象都要有的方法,只能声明在Object类中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值