java多线程和并发(第一天)

进程独占内存空间,保存各自运行状态,相互间不干扰且可以相互切换,为并发处理任务提供了可能

线程共享进程的内存资源,相互切换更快速,支持更细粒度的任务控制,使进程内的子任务得以并发执行

 

进程是资源分配的最小单位,线程是cpu调度的最小单位

所有与进程相关的资源都被记录在PCB中

进程是抢占处理机的调度单位;线程属于某个进程,共享其资源

线程只由堆栈寄存器、程序计数器和TCB组成

start和run的区别

线程中start方法,会创建一个新的线程然后调用线程中的run方法

直接调用run方法,则只会执行run方法,而不创建新的线程

Thread和Runnable的区别

Thread 是一个类,Runnable是一个接口

可以继承Thread,派生一个类,然后调用start方法

可以实现Runnable接口,生成类,将此类传入Thread,调用Thread对象的start方法

建议使用实现Runnable方法,创建多线程

如何实现处理线程的返回值

主线程等待法:在主函数中添加while语句,只要线程返回值不为空,则继续等待,调用sleep方法

使用Thread类的join方法阻塞当前线程以等待子线程处理完毕

通过Callable接口实现:通过FutureTask Or 线程池获取

通过FutureTask 获取:

实现一个Callable接口的call方法,返回值

生成一个FutureTask对象,传入callable的对象

将FutureTask对象传入线程Thread,启动

调用isDone来判断线程是否结束,利用get获取返回值

线程池

ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
Future<String>  future= newCachedThreadPool.submit(new MyCallable());
if(!future.isDone()){
    System.out.println("wait");
}
try {
    System.out.println(future.get());
}
catch (Exception e){

}
finally {
    newCachedThreadPool.shutdown();
}

线程池的好处,能够实现多个callable类,并发处理

 

线程的状态:有6个

  • New(新建):创建后尚未启动的线程的状态
  • Runnable(运行):包含Running和Ready
  • Waiting(无限期等待):不会被分配cup执行时间,需要显示被唤醒
  • Timed Waiting(限期等待):在一定时间后会由系统自动唤醒
  • Blocked(阻塞):等待获取排他锁
  • 结束(Terminated):已终止线程的状态,线程已经结束执行

 

sleep方法和wait的方法

基本差别:

  • sleep是Thread类的方法,wait是Object类中定义的方法
  • sleep方法可以在任何地方使用
  • wait只能在synchronized方法或者synchronized块中使用,因为获取锁了,才能释放锁

wait能够让出cpu,释放锁,slepp不能释放锁

notify和notifyAll的区别

每个对象都有所锁池(EntryList)和等待池(WaitSet)

notifyAll会让所有处于等待池中的线程全部进入锁池去竞争获取锁的机会

notify只会随机选取一个

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值