多线程学习笔记

当我们给计算机一个任务时,对于计算机来讲,即进行了一个进程,每一个进程中包含一个或多个线程,有时多个线程会对同一个资源进行修改,即发生线程并发问题。

线程创建的三个方式:

extends Thread、implements Runnable、implements callable(一般不用)

首先是第一个 ,继承Thread类,再main函数中 new一个对象,然后调用start()方法,就开始执行run()方法体中的内容,主线程main和run交替执行,因为cpu调用速度很快,所以在我们看来就是同时执行的

code:

result:

然后是实现Runnable,其实Thread也是实现了Runnable接口,在重写run()的时候,添加了其他的方法,这时就应该在main()方法体中创建线程对象(其实是一种静态代理机制,真实对象和目标对象实现的都是Runnable接口)

至于最后一个Callable,类在实现Callable接口的时候,首先要重写call()方法,这是一个具有返回值的方法,并且Callable与Future结合,可跟踪异步计算的结果,目前自己还是菜鸟,这个方法应该也是用不到(其实是没看懂)

然后是守护线程和用户线程  一般的都是用户线程,默认的setDaemon()值为false,JVM会确保用户线程执行完毕,而守护线程setDaemon()值为true,JVM不用等待其执行完毕

防止线程不安全的方法一个是synchronized设置方法或对象(也可以是类),一个代码块中synchronized中的Obj就是被同步的,即必须等待一个线程修改完毕其他线程才能进行修改

线程通信 操作线程.wait()方法或者操作线程.notify()方法,一个是等待,一个是通知

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值