Java多线程基础知识

樵夫2021-12-13 11:40

  在解释多线程之前,简要介绍线程和过程的概念:

  过程:过程是程序的执行过程,是资源分配的最小单元,过程切换成本大,一个过程包含多个线程。

  线程:线程是过程中的执行序列,是操作系统调度的最小单位。线程间切换成本小,多个线程共享流程资源。

Java多线程基础知识

  那为什么需要多线程呢?

  线程间切换和调度的成本远低于过程。此外,多核CPU时代意味着多个线程可以同时运行,降低了线程上下文切换的成本。

  多线程并发编程是开发高并发系统的基础,利用多线程机制可以大大提高系统的整体并发能力和性能。

  1、线程和进程有什么区别?

  线程是过程的子集。一个过程可以有多个线程,每个线程都有自己的计数器、堆栈内存和局部变量,并且可以访问共享内存。但是不同的过程有自己的堆栈空间。

  2、多线程的优点是什么?

  1)由于现代计算机核数的不断增加,线程作为大多数操作系统调度的基本单元,当一个程序作为一个过程运行时,会产生多个线程,但每时每刻,一个处理器上只能执行一个线程。如果是单线程,运行时只会使用一个处理器,再多的处理器核心也没用。但是如果是多线程,程序的计算可以分配到多个处理器,大大缩短了程序的运行时间。比如一个程序使用单线程,在四核CPU上运行时间为8ms,所以如果使用4线程,运行时间可以缩短到8ms以下。注意这里的运行时间一般不是倍数关系,因为多线程在执行时有上下文切换,不是线程越多,执行效率越高。相反,如果使用太多的线程,效率会降低。

  2)多线程可以使程序有更快的响应时间。例如,如果你想在中午吃饭,你可以在烹饪前在电饭煲里煮米饭,然后烹饪。这样,当你完成烹饪时,米饭可能已经好了。如果是单线程,你可以先煮米饭或先做饭,这将使这两件事的总时间更长。

  3)与过程相比,创建和切换线程的成本更小。

  3、如何在Java中实现线程?

  在Java中创建多线程通常有两种方法,但至少有四种方法:详情请参考Java实现多线程的四种方法。

  1)继承Thread类创建线程。定义一个继承Thread类的A,并覆盖run()方法,在run()方法中执行线程操作,然后在main方法中创建此类对象:Aa=newa(),然后用对象实例调用start()方法启动线程并执行,即a、start()。

  2)实现Runable接口创建线程。定义一个实现Runable接口的类A,在类中实现run()方法。请注意,这个类不是线程类。实现run()方法后,在主线程中new一个类对象,如Aa=newa(),然后创建线程类,Threadt=newthread(a),将刚刚创建的实现run()的类实例传递给线程类,然后继续调用start()方法创建线程并执行。其实第一种方法是线程实现Runable接口,重写Run()相当于实现Runable接口的Run()方法。

  3)使用Callable和FutureTask创建线程。定义Callable接口的实现类,创建Calable实现类对象传输到FutureTask构造器,将FutureTask对象传输到Thread构造器,Thread对象调用start方法启动线程,通过FutureTask对象的get方法获取线程运行结果。

  4)使用线程池,如Executor框架。Executors工具中的静态工厂方法用于创建线程池,Execute方法用于创建线程池,等待提交的任务完成,然后关闭线程。

  以上就是开课吧小编为大家整理发布的“Java多线程基础知识”一文,更多相关内容尽在开课吧广场Java教程频道。

Java多线程基础知识

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享