Java线程原理

**

Java线程原理

**

初学java,有什么不对不好的地方,还请各位大佬指正

一, java线程概述**

我今天来聊一下线程的理论只是,提到线程,我们不得不说一下进程,但我看咱们课本上对线程的介绍有一点抽象,那咱们就用一个比喻来介绍一下线程。那咱们就用咱们熟悉的工厂来做一个比喻,我么都知道,计算机的核心是CPU,它承担着计算机的所有任务,那么把CPU比作一座工厂,它在时刻运转着,如果一个工厂的电力有限,一次只能将全部电力供给给一个工厂,也就是说一次只能由一个工厂运转,其他工厂是停工状态,我们可以把这种模式带到计算机里。

在我们单CPU的计算机里,一次只能在物理上运行一个线程,由操作系统进行调度,在多CPU的计算机里,才是真正的物理上的实现。

我们的计算机在每时每刻,真正执行的只有一个线程,但是由于计算机的CPU执行速度非常快,给人的感觉像是同时执行。

而进程就像我们说的工厂里面的车间,工厂一次只能运转一个车间,在计算机里,一次只能运行一个进程,而其他线程则处于非运行状态。

当然,在车间里面,还有许多的工人,在计算机中,线程与进程的关系,就像是工厂中车间与工人的关系,车间里有许多工人,而在进程中,又存在许多的线程。
一个进程可以拥有许多的线程,线程类似与一个程序,又自己的开始、执行、结束,而进程,则是一种“自包容”程序,又自己的地址空间。在Windows中,一个exe文件则相当于一个进程。

线程是程序中的执行路径,在Java虚拟机中由内核对象和堆栈组成,线程是操作系统或Java虚拟机的调度的运行单元。

在一座工厂中,车间的公共空间由工人们共享,而这就是我们说的进程是一种“自包容”的运行程序,而且大家想象一下,车间里面的工人可以进出,也就是说进程的内存的内存空间是共享的,每一个进程都可以使用这些内存空间。

在这里插入图片描述

这是  而这是Windows中的任务管理器,计算机中正在运行多个进程,基于进程的特点,允许计算机运行多个程序。

计算机引入线程的优点是:
一,充分利用CPU的资源
二,简化编程模型
三,简化异步时间出路
四,使GUI更有效率
五,节约成本

二, java线程模型**

在我们以前学过,Java与C语言的面向过程不同,Java是一种面向对象的语言,Java的线程模型也是面向对象的。
咱们之前说了这么多,大家应该会有一个疑问,在Java中应该怎么建立线程,其实在Java中,由两种建立线程的方法,一种是继承Thread类,而另一种是实现一种Runnable接口,但是光有Runnable接口不行,还得有实现Runnable的类和Thread类才行。

曾经我们老师讲过,所有面向对象编程语言都提供面向对象的机制,即封装,继承和封装,而所谓的封装,就是把对象的属性和方法结合起来,并且尽可能的隐蔽对象的内部细节,形成一个不可分割的独立单位(即对象),而Java通过Thread类将线程所必须的功能都封装了起来。

今天我们来详细的聊一下这两种建立线程的方法。

第一种是Thread类,用户可以通过直接实例化Thread或者其子类对象来创建线程Thread子类需要重写run()方法,并在run()方法内部来定义线程的功能语句。其中,run()方法是一个线程执行函数。但是直接调用Thread类或者是Runnable对象(注意这里是对象而不是接口)的run()方法是无法启动的,必须通过Thread的start()方法才行,该start()方法是用于启动线程,当调用了start()方法后,如果线程启动成功,那么该线程将自动调用了run()方法,但是这些都是系统它设计好的,如果你想运行自己的线程执行函数,那么就需要重写Thread的run()方法。

还需要注意,如果你多次调用了start()方法,那么会出现一个异常。

第二种则是使用Runnable接口, 在Runnable接口中有且只有一个Run()方法,它为非Thread子类的类提供了一种激活方式。

在使用Runnable()接口时,需要建立一个Thread类实例,因为一个类如果实现了Runnable接口后,并不代表该类是一个“线程类”,不能直接运行,必须通过Thread类的实例才能创建并运行线程,下面说说具体步骤:

一,定义实现Runnable接口的类,并实现该接口中的run()方法;
二,建立一个Thread对象,并将实现Runnable接口的类的对象作为u参数传入Thread类的构造方法。
三,通过Thread类的start()方法并启动线程,并运行。

其实在Java的程序中至少包含一个线程,即主线程,其他线程都是通过Thread构造器或者实例化继承类Thread的类来创建的。

其实上面我么说的这两种办法我们仔细看,其实有一个共同点,那就是通过Thread类建立线程并运行Run()方法。

如果有什么不对的地方,还请大家指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值