专栏首页人生得意须尽欢进程和多线程的概念及线程的优点
原创

进程和多线程的概念及线程的优点

Java 启动线程

  Java 启动线程主要有三种方式(其实还有一种实现Callable接口的方式):

  • 继承Thread类
  • 实现Runnable接口
  • 直接在函数体使用

继承 Thread 类

  先来看看Thread类的结构,如下:

public class Thread implements Runnable

  Thread类实现了 Runnable接口,它们之间具有多态关系。其实,使用继承Thread类的方式创建新线程时,最大的局限就是不支持多继承,因为 Java语言的特点就是单继承,为了改变这种限制,完全可以实现Runnable接口的方式。用这两种方式创建的线程在工作时的性质是一样的,没有本质的区别。下面给出继承 Thread 类例子(注意代码中将两个类放到了一起,运行时请放到不同的.java文件中)。

public class MyThread extends Thread {
	@Override
	public void run() {
		super.run();
		System.out.println("MyThread");
	}
}
public class Run {
	public static void main(String[] args) {
		MyThread mythread = new MyThread();
		mythread.start();
		System.out.println("运行结束!");
	}
}

输出:

运行结束!
MyThread

  从运行结果来看,MyThread.java类中的run方法执行的时间比较晚,这也说明在使用多线程技术时,代码的运行结果与代码执行顺序或调用顺序是无关的,多线程是异步的。线程是一个子任务,CPU以不确定的方式,或者说是以随机的时间来调用线程中的run 方法,所以就会出现先打印“运行结束!”后输出“MyThread”这样的结果了。同时注意:执行start()方法的顺序不代表线程启动的顺序。   如果直接在main函数中调用MyThread.java的run方法:Thread.java类中的start()方法通知“线程规划器”此线程已经准备就绪,等待调用线程对象的run()方法。这个过程其实就是让系统安排一个时间来调用Thread中的run()方法,也就是使线程得到运行,启动线程,具有异步执行的效果。如果调用代码mythread.run()就不是异步执行了,而是同步,那么此线程对象并不交给“线程规划器”来进行处理,而是由main主线程来调用run()方法,也就是必须等run()方法中的代码执行完后才可以执行后面的代码。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 1.1进程和多线程的概念及线程的优点

    进程的概念: 进程是操作系统结构的基础,是一次程序的执行,是程序及其数据在处理机上的顺序执行过程,是程序在数据集合上运行的过程,它是系统进行资源分配和调度的独立...

    用户1134788
  • 多线程(一)—进程和线程的概念

    进程:正在进行的程序【代码块】,操作系统会为正在运行的程序分配内存空间 线程:本质就是一条执行路径,可以理解为是进程的子任务【迅雷多资源下载】, 一个进程可以...

    全栈程序员站长
  • 多线程 线程 进程概念

    正在进行中的程序。每一个进程至少有一个线程。当程序运行时在内存空间中开辟一片独立空间。每一个进程都有一个执行顺序。 一个进程更象一个任务。 进程的内存原理:

    潇洒
  • 进程和线程的概念、区别及进程线程间通信

    进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;

    海盗船长
  • 进程、线程、锁的概念

    上周五终于改好bug,想着把代码同步到个人GitHub上面,就随手 git push同步到远程。然而万万没想到,之前 touch过一个 information....

    小一
  • 一文讲解进程、线程、多进程、多线程的优缺点

    IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical secti...

    本人秃顶程序员
  • UNIX(多线程):02---并发基本概念及实现,进程、线程

    用户3479834
  • 进程和线程的概念、区别和联系

    进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。

    用户7657330
  • Java--进程和线程基本概念

    SuperHeroes
  • 多线程基础(一): 线程概念及生命周期

    什么是进程,相信大家都知道什么是进程却很难解释清楚。百科中的解释是:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调...

    冬天里的懒猫
  • 进程和线程的概述

    黑泽君
  • Java多线程编程-(1)-线程安全和锁Synchronized概念

    (1)在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单位都是进程。

    Java后端技术
  • Python线程与进程的一些概念

    概念 进程就是一个程序在一个数据集上的一次动态执行过程。 进程一般由程序、数据集、进程控制块三部分组成。我们编写的程序用来描述进程要完成哪些功能以及如何完成;数...

    龙哥
  • 多线程面试题【基本概念和线程创建】

    推荐阅读:看完本文,再也不怕问java线程创建的几种方式了 创建线程主要有3种方式:

    田维常
  • java多线程概念及实现方式

    乐心湖
  • java 多线程研究:锁的概念

    java多线程:锁 java的多线程中的锁是干嘛的呢?在网上找了很多博客,大都是很专业的语言,让我一时间摸不着头脑。下面分三个部分来总结多线程中的锁的概念。 一...

    ShenduCC
  • 进程通信概念简介 多线程上篇(六)

    进程通信指的是进程间的信息交换 ,IPC(Inter-Process Communication,进程间通信)

    noteless
  • 进程同步概念简介 多线程上篇(四)

    比如尽管有两个人去水井打水,但是水井却只有一个;合理安排的话刚好错开,但是如果安排不合理,那就会出现冲突,出现冲突怎么办?总有一个先来后到,等下就好了。

    noteless
  • 进程控制概念简介 多线程上篇(三)

    进程的基本数据信息是操作系统控制管理进程的数据集合,这些信息就是用来控制进程的,此处我们说的进程控制就是进程的管理。

    noteless

扫码关注云+社区

领取腾讯云代金券