美文网首页
2020-09-13 Java多线程

2020-09-13 Java多线程

作者: flynnny | 来源:发表于2020-09-15 00:22 被阅读0次

一、并发与并行

并发:两个或多个事件在同一时间段内发生;
并行:两个或多个事件在同一时刻发生。

线程1.png

二、线程与进程

进程:内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序既是一个进程从创建、运行到消亡的过程。
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。

线程调度:

分时调度:所有线程轮流使用CPU,平均分配每个线程占用CPU的时间;
抢占式调度:优先让优先级高的线程使用CPU,优先级相同的会随机选择一个(线程随机性),Java使用的是抢占式调度。

主线程:执行主(main)方法的线程

单线程程序:程序中只有一个线程,从main方法开始从上到下依次执行。
1.jvm执行main方法,main方法进入栈内存;
2.Jvm找操作系统开辟一条main方法通向CPU的执行路径,CPU就可以通过之歌路径执行main方法;
3.这个路径叫为主(main)线程。


线程2.png

三、创建线程类

Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。
创建并启动多线程的步骤如下:
(方法一)
1.定义Thread类的子类,并重写该类的run()方法(线程的执行体)。
2.创建Thread子类的实例,即线程对象;
3.调用线程对象的start()方法启动线程。
(方法二)
1.定义Runnable接口的实现类,并重写该接口的run()方法。
2.创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread线程对象。
3.调用线程对象的start()方法启动线程。

Thread 和Runnable的区别:如果继承Thread,不适合资源共享,但是Runnable接口很容易实现资源共享。可以继承其他类,增强了扩展性。降低了耦合性。

匿名内部类方式创建线程
格式:

new Thread(new Runnable(){
        @override
        public void run(){
                //执行内容...
        }
}).start();

注意start()方法和run()方法区别:run()方法只是加入原来的栈,还是原来的线程;start()方法每次都开辟一个新的栈并调用run()方法,实现多线程。

附:线程运行内存图如下:


线程3.png

为下一篇线程安全做准备!

相关文章

  • 2020-09-13 Java多线程

    一、并发与并行 并发:两个或多个事件在同一时间段内发生;并行:两个或多个事件在同一时刻发生。 二、线程与进程 进程...

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • java多线程--Callable

    **移步[java多线程系列文章]Java多线程(二十二)---LockSupport工具Java 停止线程 一、...

  • android 多线程 — 线程的面试题和答案

    这里都是我从各个地方找来的资料,鸣谢: Java多线程干货系列—(一)Java多线程基础 JAVA多线程和并发基础...

  • 5月份第一周学习安排

    学习内容: java多线程及线程同步的方法(使用) java多线程各种同步方法的原理和优缺点 java多线程设计模...

  • 带你搞懂Java多线程(四)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三) 什么是线程间的协作 线程之间...

  • Java基础(六)

    多线程 Java多线程并发 1.1 JAVA 并发知识库 1.2 JAVA 线程实现/创建方式 1.2.1 继承 ...

  • (五) volatile关键字

    Java多线程目录 1 背景 理解Java多线程的内存抽象逻辑请阅读java多线程内存模型,当代操作系统,处理器为...

网友评论

      本文标题:2020-09-13 Java多线程

      本文链接:https://www.haomeiwen.com/subject/yjtaektx.html