多线程心得

一:首先我去想去弄明白为什么要用多线程?

因为多线程能提高执行效率,尽可能的利用程序资源,而多进程是尽可能的利用CPU的资源,并且能增强用户体验。

二:那其次要知道如何利用多线程?创建多线程主要有两种方法:

                 第一种创建多线程方法:

①:创建一个线程类继承Thread类,并重写Thread类中的run方法,在run方法中编写多线程执行体。

②:在测试类中,实例化线程类,可以实例化多个线程类。

③:通过start()方法启动线程,默认执行run方法。

                 第二种创建多线程方法:

①:创建一个线程类实现runable接口,并在该线程类中重写run()方法,run中编写线程执行体。

②:实例化上面的线程类,并额外再创建一个Thread实例,如Thread t1 = new Thread("上一个线程类的对象引用放到这");

③:调用 Thread 类的 start() 方法启动线程,默认执行 run() 方法。

三:会创建多线程了,那多线程都有哪些常用方法?

currentThread() : 获取当前线程
getName() : 获取线程名称
setName() : 设置线程名称
start() : 启动线程
sleep(long millis) : 是一个静态方法,使当前线程进入睡眠状态
join() / join(long millis) : 是一个实例方法,使当前线程进入阻塞状态
interrupt() : 中断阻塞状态的线程
isAlive() : 判断当前线程是否处于存活状态
yield() : 线程让步

四:线程的生命周期是什么?这点很重要,利用一个图来解释


五:虽然可以利用多线程了,但是这样利用多线程还存在一定的弊端,就是不安全问题。所以这时就可以利用线程同步机制了。

线程同步的核心思想:将多个线程需要访问的共享数据,包装起来,视为一个整体,确保一次只有一个线程执行流访问共享数据;

线程同步方式主要有三种形式:

①:synchronized (同步监视器){

同步代码块

}

同步监视器 : 俗称“锁”,可以使用任意对象充当,必须确保多个线程持有同一把锁(同一个对象)

②:public    synchronized  void show(){

隐式的锁: this

}

③:同步锁

lock();//上锁


unlock();//解锁

6:终止线程的操作

stop()和suspend()方法来终止线程的执行,当用Thread.stop()来终止线程,会释放已经锁定的所有监视资源,如果当前任何一个受这些监视保护的对象处于一个不一致的状态,调用suspend容易发生死锁现象,suspend()不会释放锁,如果用一个suspend挂起一个有锁的线程,那么锁恢复之前将不会被释放。





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值