当前位置: 首页 > 编程笔记 >

java 多线程的几种实现方法总结

纪枫
2023-03-14
本文向大家介绍java 多线程的几种实现方法总结,包括了java 多线程的几种实现方法总结的使用技巧和注意事项,需要的朋友参考一下

java 多线程的几种实现方法总结

1.多线程有几种实现方法?同步有几种实现方法?

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

同步的实现方面有两种,分别是synchronized,wait与notify

wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。

Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 

2、启动一个线程是用run()还是start()? .

启动一个线程是调用start()方法,使线程就绪状态,以后可以被调度为运行状态,一个线程必须关联一些具体的执行代码,run()方法是该线程所关联的执行代码。 

3、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

分几种情况:

     1.其他方法前是否加了synchronized关键字,如果没加,则能。
     2.如果这个方法内部调用了wait,则可以进入其他synchronized方法。
     3.如果其他个方法都加了synchronized关键字,并且内部没有调用wait,则不能。
     4.如果其他方法是static,它用的同步锁是当前类的字节码,与非静态的方法不能同步,因为非静态的方法用的是this。 

4、线程的基本概念、线程的基本状态以及状态之间的关系

一个程序中可以有多条执行线索同时执行,一个线程就是程序中的一条执行线索,每个线程上都关联有要执行的代码,即可以有多段程序代码同时运行,每个程序至少都有一个线程,即main方法执行的那个线程。如果只是一个cpu,它怎么能够同时执行多段程序呢?这是从宏观上来看的,cpu一会执行a线索,一会执行b线索,切换时间很快,给人的感觉是a,b在同时执行,好比大家在同一个办公室上网,只有一条链接到外部网线,其实,这条网线一会为a传数据,一会为b传数据,由于切换时间很短暂,所以,大家感觉都在同时上网。 

  状态:就绪,运行,synchronize阻塞,wait和sleep挂起,结束。wait必须在synchronized内部调用。

  调用线程的start方法后线程进入就绪状态,线程调度系统将就绪状态的线程转为运行状态,遇到synchronized语句时,由运行状态转为阻塞,当synchronized获得锁后,由阻塞转为运行,在这种情况可以调用wait方法转为挂起状态,当线程关联的代码执行完后,线程变为结束状态。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

 类似资料:
  • 本文向大家介绍Java 多线程有几种实现方式?相关面试题,主要包含被问及Java 多线程有几种实现方式?时的应答技巧和注意事项,需要的朋友参考一下 有4种,分别是: 继承Thread类 实现Runnable接口 实现Callable接口通过FutureTask包装器来创建Thread线程 通过线程池创建线程,使用线程池接口ExecutorService结合Callable、Future实现有返回结

  • 本文向大家介绍Java 多线程有序执行的几种方法总结,包括了Java 多线程有序执行的几种方法总结的使用技巧和注意事项,需要的朋友参考一下 Java 多线程有序执行的几种方法总结 同事无意间提出了这个问题,亲自实践了两种方法。当然肯定还会有更多更好的方法。 方法一     这种方法应该是比较常见的解决方案。利用原子递增控制线程准入顺序。 方法二     方法二使用了volatile关键字。让每个线

  • 本文向大家介绍Java线程池的几种实现方法和区别介绍,包括了Java线程池的几种实现方法和区别介绍的使用技巧和注意事项,需要的朋友参考一下 Java线程池的几种实现方法和区别介绍 使用:LinkedBlockingQueue实现线程池讲解 关于:RejectedExecutionHandler几种默认实现讲解 以上这篇Java线程池的几种实现方法和区别介绍就是小编分享给大家的全部内容了,希望能给大

  • 本文向大家介绍实例总结Java多线程编程的方法,包括了实例总结Java多线程编程的方法的使用技巧和注意事项,需要的朋友参考一下 1.什么时候使用多线程编程 一个任务在正常情况下是按顺序执行的,但是如果当前任务里有多个相似进程块(例如for,while语句),我们就可以考虑把这些代码块抽出来并行运行,无需阻塞 2.实现多线程的几种方式 一种是继承Thread类重写run方法,另一种是实现Runnab

  • 本文向大家介绍IOS多线程编程的3种实现方法,包括了IOS多线程编程的3种实现方法的使用技巧和注意事项,需要的朋友参考一下 前言 在多线程简介中,我已经说明过了,为了提高界面的流畅度以及用户体验。我们务必要把耗时的操作放到别的线程中去执行,千万不要阻塞主线程。 iOS中有以下3种多线程编程方法: 1.NSThread 这是最轻量级的多线程的方法,使用起来最直观的多线程编程方法。但是因为需要自己管理

  • 本文向大家介绍Spring AOP的几种实现方式总结,包括了Spring AOP的几种实现方式总结的使用技巧和注意事项,需要的朋友参考一下 AOP核心概念 1、横切关注点 对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点 2、切面(aspect) 类是对物体特征的抽象,切面就是对横切关注点的抽象 3、连接点(joinpoint) 被拦截到的点,因为spring只支持方法类型的连接点,