一、多线程的基本概念

  线程是指进程中的一个执行场景,也就是执行流程,所以我们首先要聊一聊进程,以及进程和线程的关系

1、什么是进程?

  一个进程对应一个应用程序,就像我们在windows系统中启动Word就表示启动了一个进程,在java的开发环境下启动JVM,就表示启动了一个进程。现代的计算机都是支持多进程的,在同一个操作系统中可以同时启动多个进程。那什么又是多进程呢?

2、什么是多进程,多进程有什么作用?

  单进程计算机只能做一件事情,就像很久以前的计算机,只能打开一个Dos窗口,这就是单进程的。

  而你平时一边打着lol(lol进程),一边听着音乐(音乐进程),这就是多进程的。那么问题来了,对于单核计算机来讲,在同一个时间点上,游戏进程和音乐进程是同时在运行吗?

  不是。(多核的计算机可以同时运行,所以处理速度高),因为计算机的CPU只能在某个时间点上做一件事,由于计算机可以在“游戏进程”和“音乐进程”之间频繁的切换执行,切换速度极高,人类感觉游戏和音乐在同时进行。生活中有很多这样的例子,以前的小人书,通过快速的翻页,人就动了起来,电影一帧一帧播放,画面就动了,人类感觉是同时进行,其实是通过CPU快速的切换,是人感觉是这样的。所以多进程的作用不是提高执行速度,而是提高CPU的使用率,以前一个CPU只能做一件事,现在通过不同进程之间的切换就可以实现干多个事情。

3、什么是线程,与进程的联系?

    线程是一个进程中的执行场景。一个进程可以启动多个线程。可以理解为一个进程可以包含多个线程。

4、多线程有什么作用?

    同样,多线程与多进程的作用是一样的,并不是为了提高执行速度,而是提高应用程序的使用率,就像有三个人同时访问百度服务器(输入百度网址),服务器端的程序就是一个

进程,如果他是单线程的那我访问的时候,你就不能访问百度服务器,如果我们每个人都占用一个线程,服务器在我们之间频繁的切换,给我们一种错觉感觉多个线程在同时并发执行,就

可以实现很多人同时访问百度网站。线程和线程共享“堆内存和方法区内存”,栈内存是独立的,一个线程一个栈。

5.java程序的运行原理?

  java命令会启动java虚拟机,启动JVM,等于启动了一个应用程序,表示启动了一个进程。该进程会自动启动一个“主线程”,然后主线程去调用某个类的main方法,所以

main方法运行在主线程中。

 二、java中是如何实现多线程的

1、在java语言中实现多线程的第一种方式:

  (1)继承java.lang.Thread

  (2) 重写run方法。

三个知识点:

  如何定义线程? 继承Thread类

  如何创建线程? new 子类调用

  如何启动线程? .start()方法

2、在java语言中实现多线程的第二种方式:

(1)写一个类实现java.lang.Runnable接口

(2)   实现run方法

 三、线程的生命周期

  

   

线程基础的一些理解(一)(java)的更多相关文章

  1. Java线程基础知识(状态、共享与协作)

    1.基础概念 CPU核心数和线程数的关系 核心数:线程数=1:1 ;使用了超线程技术后---> 1:2 CPU时间片轮转机制 又称RR调度,会导致上下文切换 什么是进程和线程 进程:程序运行资源 ...

  2. java核心技术-多线程之线程基础

    说起线程,无法免俗首先要弄清楚的三个概念就是:进程.线程.协程.OK,那什么是进程,什么是线程,哪协程又是啥东西.进程:进程可以简单的理解为运行在操作系统中的程序,程序时静态代码,进程是动态运行着的代 ...

  3. java线程基础知识----线程基础知识

    不知道从什么时候开始,学习知识变成了一个短期记忆的过程,总是容易忘记自己当初学懂的知识(fuck!),不知道是自己没有经常使用还是当初理解的不够深入.今天准备再对java的线程进行一下系统的学习,希望 ...

  4. java线程基础巩固---线程生命周期以及start方法源码剖析

    上篇中介绍了如何启动一个线程,通过调用start()方法才能创建并使用新线程,并且这个start()是非阻塞的,调用之后立马就返回的,实际上它是线程生命周期环节中的一种,所以这里阐述一下线程的一个完整 ...

  5. java线程基础巩固---创建并启动线程

    对于java的并发编程方面的东东,不管是面试还是实际工作开发都是非常重要的,而往往只要涉及到并发相关的东东有点让人觉得有点难,而实际工作中涉及到并发可能就是简单的用下同步块.上锁之类的一些简单的操作, ...

  6. java 线程基础篇,看这一篇就够了。

    前言: Java三大基础框架:集合,线程,io基本是开发必用,面试必问的核心内容,今天我们讲讲线程. 想要把线程理解透彻,这需要具备很多方面的知识和经验,本篇主要是关于线程基础包括线程状态和常用方法. ...

  7. 线程和线程池的理解与java简单例子

    1.线程 (1)理解,线程是系统分配处理器时间资源的基本单元也是系统调用的基本单位,简单理解就是一个或多个线程组成了一个进程,进程就像爸爸,线程就像儿子,有时候爸爸一个人干不了活就生了几个儿子干活,会 ...

  8. Java线程基础实例

    概述 Java线程是一个在实战开发中经常使用的基础功能,而在Java中线程相关的类在java.lang和java.util.concurrent里 Thread package thread.base ...

  9. JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)

    实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...

随机推荐

  1. [实战演练]Intel面试题目 - 进栈出栈顺序问题

    电话面试中写C++,逻辑比较清楚的一个题目,一紧张就不能好好地写下来,漏洞百出.以前经常在完善的编译环境中写代码,换了一个白板子上写反而写的不通顺了,犯了一些基础错误,比如stack中的首个元素是to ...

  2. supervisor错误记录

    今天在使用supervisor配置多个程序时遇到了问题如下 FATAL     Exited too quickly (process log may have details) 然后就找到了日志文件 ...

  3. 201621123018《Java程序设计》第9周学习报告

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 泛型个人认为可以理解为一种模糊的类型,在里面写入各种方法,程序员可以根据需要再创建具体类型的对象,然后调用泛型 ...

  4. Codeforces Round #425 (Div. 2) B. Petya and Exam(字符串模拟 水)

    题目链接:http://codeforces.com/contest/832/problem/B B. Petya and Exam time limit per test 2 seconds mem ...

  5. 读配置文件property文件

    import java.io.IOException;import java.util.Properties; import org.springframework.core.io.support.P ...

  6. Shell - 简明Shell入门11 - 调用脚本(CallTheScript)

    示例脚本及注释 主脚本: CallTheScript.sh #!/bin/bash . ./11-subscript.sh # 调用其他脚本;注意点号"."和文件路径之间有一空格; ...

  7. AndroidStudio配置LitePal

    配置,许多书上还有教程都忽略了将LitePal下载下来和拷贝的过程,这里写一个详细的课程 首先,前往GitHub,下载LitePal的包. 然后解压,会看到这个 进入download 自己选个版本,然 ...

  8. 11-02 Java Object类使用详解

     Object 作为超类 Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类. Object类的构造方法有一个,并且是无参构造,这其实就是理解当时我们说过,子类构造方法默认访 ...

  9. asp.net core中遇到需要自定义数据包解密方法的时候

    最近将公司的项目用.netcore重写, 服务的http外部接口部分收发消息是DES加解密的, 那么在asp.net core mvc的action处理之前需要加入解密这个步骤. 我第一想到的是用fi ...

  10. 在Android中调用KSOAP2库访问webservice服务出现的服务端返回AnyType{}

    最近在做毕业设计的时候,涉及到了安卓端访问web service服务端数据库,并返回一个值,当我把web service测试通过后,想写一个简单的安卓测试程序,来实现服务端数据库访问,通过web se ...