java并发的一些知识点

1.java中实现线程通信的方式(说说与线程相关的方法)
1)对象的 wait(long timeout)、wait(long timeout, int nanos)、wait() 方法,组合对象的 notify()、notifyAll()
2)显示锁:Lock.newCondition()、Condition await 系列方法、Condition signal()、signalAll()(JDK 1.5 开始通过 Lock 接口提供了显式锁机制,丰富了锁的功能,可以尝试加锁和加锁超时。Lock 接口中定义了加锁 lock()、释放锁 unlock() 方法 和 newCondition() 产生用于线程之间通信的 Condition 对象的方法)
3)信号量:Semaphore acquire 系列方法、release()系列方法(JDK 1.5 还提供了信号量(semaphore)机制,信号量可以用来限制对某个共享资源进行访问的线程的数量。在对资源进行访问之前,线程必须得到信号量的许可(调用 Semaphore 对象的 acquire()方法);在完成对资源的访问后,线程必须向信号量归还许可(调用 Semaphore 对象的 release()方法)。)

2.用户线程和守护线程
Java线程中有两种线程:①用户线程 ②守护线程
用户线程:平时用到的普通线程均是用户线程

守护线程:指在程序运行的时候在后台提供一种通用服务的线程,守护线程是为用户线程服务的,当有用户线程在运行,那么守护线程同样需要工作,当所有的用户线程都结束时,守护线程也就会停止

注意:
1)设置线程的Daemon为true,且必须在thread.start()之前设置
2)Daemon线程中产生的新线程也是Daemon
3)守护线程不应该去访问固有资源,如进行读写操作(文件,数据库),因为守护线程是跟随用户线程的,当没有用户线程工作时,守护线程会立即结束

没有守护线程:
在这里插入图片描述

结果:
在这里插入图片描述

有守护线程
在这里插入图片描述
结果
在这里插入图片描述

守护线程使用的场景:
不适合用于输入输出或计算操作
适用于辅助用户线程场景,如GC,内存管理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值