黑马程序员----多线程

进程其实是在内存中开辟的运行空间。进程直译:正在进行中的程序。

线程:就是进程中负责执行的控制单元。(一条执行路径,什么东西呀!理解名词这么多!)



话说:其实多线程就是CPU在做着快速切换运行程序。


CPU多,内存不够的话没有程序处理! 


多线程好处:解决了多部分同时运行的问题。


多线程的弊端:线程太多回到效率的降低。




其实应用程序的执行都是cpu在做着快速的切换完成的。这个切换是随机的。


JVM其实就是一个多线程机制,因为main函数在运行的时候,应该有其他线程在对垃圾进行回收。

每个对象都具备被回收的方法。这个方法是?


垃圾回收器?这个环节单独被一个线程执行

system方法里面有垃圾回收器~!


为什么 Hello World!会先运行呢?因为这是两个线程完成的。。。。。

system.gc  启动垃圾回收器,finalize()就运行。

还没调用进程就结束了。同样的例子,不一样的结果,说明了线程的

不要走误区,认为主线程结束JVM就结束。

JVM启动时就启动了多个线程,至少有两个线程可以分析的出来。


1,执行main函数的线程,
该线程的任务代码都定义在main函数中。


2,负责垃圾回收的线程。


单线程实例,现在想要同时运行,接下来,看看怎么实现。

好吧!解决问题要先找对象,让JAVA去调用WINDOWS底层来实现。


熟悉阅读API文档关键内容。因为要使用嘛。


找到run()方法。



如何创建一个线程呢?

创建线程方式一:继承Thread类。

步骤:

1,定义一个类继承Thread类

2,覆盖Thread类中的run方法(为什么要覆盖呢?)答案:你有任务函数,我有任务内容,所以我要覆盖run方法。

3,直接创建Thread的子类对象创建线程。
4,调用start方法开启线程并调用线程的任务run方法执行。


话说,JAVA已经提供了多线程类,而且是公有的,没有静态,可以new

你有任务函数,我有任务内容,所以我要覆盖run方法。



原来用常规的方法去调用run方法是启动不了多线程的。那就到thread类里面去找方法吧。如下!!

对象.start  意思:开启线程,调用run方法。

调用run与调用start的区别在哪里?


线程有名字,还能获取名字。


可以通过Thread的getName获取线程的名称 Thread-编号(从0开始)


主线程的名字就是main。

注解:线程在创建的时候就完成了名称的定义,


看清楚,是拿到当前对象!


多线程图示,线程中的方法会在自己的线程内出栈进栈,run();方法结束后整个线程也就结束了。


线程出现异常后也都不会相互影响。线程通俗理解:一条线程一条道路,一条道路给淹了,另外的道路还能用!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值