线程(①:创建方式 ②:线程的生命周期 ③:安全问题怎么解决(3种方式--同步)④:线程池)

多线程的出现就是为了提高效率。一个应用程序就可以看做一个线程,进程中包含了多个可以同时运行的线程。
最简单的比喻多线程就像火车的每一节车厢,而进程则是火车。车厢离开火车是无法跑动的,同理火车也不可能只有一节车厢。

创建方式::::::::::::::::::::::::::::
1)继承Thread类创建线程
定义thread子类,重写run(),调用start()
2)实现Runnable接口创建线程
实现runnable接口,重写run()
创建Runnable实现类的实例,并用这个实例作为Thread的target来创建Thread对象,这个Thread对象才是真正的线程对象
调用start()
3)使用Callable和Future创建线程
call()方法可以有返回值,可以声明抛出异常

线程的生命周期:::::::::::::::::::::::::::::::::
在这里插入图片描述

线程安全问题解决办法:::::::::::::::::::::::::::::::

方法一、同步代码块
语法:
synchronized(同步锁){
//需要同步操作的代码
}

方法二、同步函数
使用synchronized修饰的方法,就叫做同步方法,保证A线程执行该方法的时候,其他线程只能在方法外等着.

方法三、同步锁
在Lock接口中lock方法和unLock方法分别是获取锁和释放锁。

总结:
Synchronized:
使用synchronized关键字修饰方法,会导致加锁,虽然可以使该方法线程安全,但是会极大的降低该方法的执行效率,故要慎用该关键字。
采用锁机制,当许多线程都想访问共享资源时,JVM 可以花更少的时候来调度线程,把更多时间用在执行线程上。

线程池:::::::::::::::::::::::::::::::
线程池:实际开发中,面临线程的反复创建和销毁,这样会消耗内存,线程池概念由此而生.
线程池可以方便的管理线程,用就取,不用就在里面放着.

使用线程池中线程对象的步骤:
1.创建线程池对象
2.创建Runnable接口子类对象(task)
3.提交Runnable接口子类对象(take task)
4.关闭线程池(一般不做)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值