我是靠谱客的博主 缥缈老师,最近开发中收集的这篇文章主要介绍多线程的理解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

多线程的作用和简介

1.同时完成几项互不干扰的工作,提高CPU使用率——比如高速的四车道和八车道

2.多线程就好比在等待水开的同时看报纸,而不是等水开了之后再看报纸,多线程是为了同步完成多项任务,而是为了提高资源使用率来提高系统的效率。

3.什么是线程和进程:

进程是对整个软件的操作,线程是进程中的执行单元。比如:运行word程序就是个进程,线程就是设置字体、字号、颜色等操作,线程是进程的一个执行单元。

可以说一个进程包含很多独立的线程。

4.多线程的机制:

同一个进程中同时并处理多个任务/线程

多线程编程又叫并发编程

每个线程是相互独立的

5.线程和进程的区别:

  ·每个运行中的程序都是一个进程,比如QQ、微信就是两个不同的进程

  ·多进程:在操作系统中能运行多个任务(程序)

  ·多线程:在同一应用程序中多个顺序同时进行

6.线程的理解:

程序执行过程:把程序代码方法放到内存的代码里面去,这时候一个进程已经产生,但是还未开始执行,执行main方法才开始执行

使用多线程的好处和坏处

好处:有效提高CPU利用率,加快代码执行效率

坏处:对共享数据进行操作时,如果未对共享数据做同步处理,会出现脏数据

如何实现多线程:

1.实现Runnable接口创建线程:

属于java.lang.Thread包,每一个Thread对象代表一个新的线程。

实现步骤:

(1)定义一个类实现Runnable接口

(2)实现接口中唯一的run方法,该方法是开启新线程要执行的代码

(3)声明线程实体类

(4)调用myThread.start()方法启动新开辟的线程

2.继承Thread类创建线程:

步骤:

(1)创建类MyThread并继承Thread

(2)实现类MyThread的run()方法,该方法是线程开启时要执行的代码逻辑

(3)生成MyThread类的对象

(4)调用myThread.start()方法启动新开辟的线程

3.两者区别:

优先选择实现Runnable接口方式开辟一个新的线程,因为接口的实现可以实现多个,类的继承只能是单继承

生命周期及管理

1.线程的生命周期:

(1)新建状态(New):新建了一个线程对象

(2)就绪状态(Runnable):线程对象创建后,其他线程调用了该对象start()方法,该状态的线程位于可运行线程池中,变得可运行

(3)运行状态(Running):就绪状态的线程获取了CPU的使用权,执行程序代码

(4)阻塞状态(Blocked):

等待阻塞—运行的线程执行wait()方法,JVM(Java虚拟机---运行Java程序)会把该线程放入等待池中

同步阻塞—运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,JVM会把该线程放入锁池中

其他阻塞—运行的线程执行sleep()或join()方法 ,或者发出了I/O请求时, JVM会把该线程置为阻塞状态 当sleep()状态超时 join()等待现成终止或者超时时 或者I/O处理完毕时 线程重新转入就绪状态

5.死亡状态(Dead):线程执行完了或者因异常退出了run()方法 该线程结束生命周期 

线程睡眠sleep()方法

控制线程执行 如果需要让当前正在执行的线程暂停一会儿 并进入阻塞状态 可以通过调用thread类的静态sleep()方法来实现 睡眠过程中该线程不会执行 因此sleep方法常用来暂停程序的执行 

最后

以上就是缥缈老师为你收集整理的多线程的理解的全部内容,希望文章能够帮你解决多线程的理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部