大家好,乐字节小乐有来咯,上次说完了Java网络编程探究|乐字节,这次我们来看看线程相关的吧。

Java线程主要讲述的内容有:

1、线程概念

多线程,说白了就是多条执行路径,原来是一条路径,就主路径(main),现在是多条路径。就相当于高速路,原来是一条路,因为车多了,为提高使用效率,充分使用这条道路,中间加了个栅栏, 变成了多条车道。

注意: 所有的车共享这条套路。

原来的执行程序为一条路径,现在加入多线程则存在多条执行路径。

1)、一条路径

方法间的调用为一条路径,如:

public class OneRoute {
public static void main(String[] args) {
System.out.print("只有");
int result =a();
System.out.print("-->"+result);
}
public static int a(){
System.out.print("main");
return b()*100;
}
public static int b(){
System.out.print("一条路径"); return 1;
}
}

2)、两条路径

开辟新的线程,为两条执行路径。

public class ThreadRoute {
public static void main(String[] args) {
System.out.print("多条路径");
new Route().start();
System.out.print("main-->");
} }
class Route extends Thread{
public void run() {
a();
}
public int a(){
System.out.print("thread");
return b()*100;
}
public int b(){
System.out.print("一条路径");
return 1;
}
}

2、程序、进程与多线程

程序是指令的集合,代码的集合;而进程是动态的概念,当程序在执行时,系统分配进

程;多线程是在同一进程下,充分利用资源 ,多条执行路径,共享资源 (cpu data code)。

注意:

很多多线程是模拟出来的,真正的多线程是指有多个 cpu,即多核,如服务器。如果是模拟出来的多线程,即一个 cpu 的情况下,在同一个时间点,cpu 只能执行一个代码, 因为切换的很快,所以就有同时执行的错觉。

3、多线程优缺点

1)、优点

资源利用率更好;程序设计在某些情况下更简单;程序响应更快

2)、缺点

a)设计更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般

都更复杂。在多线程访问共享数据的时候,这部分代码需要特别的注意。线程之间的交互往

往非常复杂。不正确的线程同步产 生的错误非常难以被发现,并且重现以修复。

b)上下文切换的开销 当 CPU 从执行一个线程切换到执行另外一个线程的时候,它需要

先存储当前线程的本地的数据,程序 指针等,然后载入另一个线程的本地数据,程序指针

等,最后才开始执行。这种切换称为“上下文切 换”(“context switch”)。CPU 会在一

个上下文中执行一个线程,然后切换到另外一个上下文中执 行另外一个线程。上下文切换

并不廉价。如果没有必要,应该减少上下文切换的发生。

4、多线程地位

线程在 java 中的地位非常重要,但是比较难以理解,庆幸的是在实际工作中,直接编

写线程的代码不多;线程在手写服务器用的很多,当然现在的服务器都是其他公司写好的,

直接拿来用即可,如果真的想把多线程学好,需要掌握很多知识,如操作系统原理、并发机

制等。 对于目前的大家来说,线程掌握以下即可:

  • 创建线程的方式
  • sleep
  • 停止线程
  • Thread.currentThread
  • 简单的 synchronized

关于Java多线程的概念和优缺点就介绍到这,下一篇将会讲讲如何创建多线程。谢谢大家,请关注乐字节!

Java多线程概念及优缺点,多线程的地位|乐字节的更多相关文章

  1. Java多线程-概念与原理

    一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在 ...

  2. Java多线程概念简介 多线程中篇(一)

    Java的线程与操作系统的线程   在线程的相关介绍中,有讲到“线程的实现”分为三种:内核支持,用户级以及两者混合.(这只是一种简要的分类) Java线程在JDK1.2之前,是用户线程实现的 而在JD ...

  3. -1-5 java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中

     本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁  sleep()和wait()方法的区别 为什么wait( ...

  4. java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)

    今天开始就来总结一下Java多线程的基础知识点,下面是本篇的主要内容(大部分知识点参考java核心技术卷1): 1.什么是线程以及多线程与进程的区别 2.多线程的创建与启动 3.中断线程和守护线程以及 ...

  5. Java基础系列3:多线程超详细总结

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 1.线程概述 几乎所 ...

  6. Java进阶(三)多线程开发关键技术

    原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...

  7. Java多线程父子线程关系 多线程中篇(六)

    有的时候对于Java多线程,我们会听到“父线程.子线程”的概念. 严格的说,Java中不存在实质上的父子关系 没有方法可以获取一个线程的父线程,也没有方法可以获取一个线程所有的子线程 子线程的消亡与父 ...

  8. 第九节:详细讲解Java中的泛型,多线程,网络编程

    前言 大家好,给大家带来详细讲解Java中的泛型,多线程,网络编程的概述,希望你们喜欢 泛型 泛型格式:ArrayList list= new ArrayList(); ArrayList list= ...

  9. JAVA在语言级支持多线程

    进程:任务 任务并发执行是一个宏观概念,微观上是串行的. 进程的调度是有OS负责的(有的系统为独占式,有的系统为共享式,根据重要性,进程有优先级). 由OS将时间分为若干个时间片. JAVA在语言级支 ...

随机推荐

  1. AtCoder Grand Contest 014题解

    传送门 \(A\) 首先大力猜测一下答案不会很大,所以次数大于\(10^6\)输出\(-1\)就行了 不过我并不会证上界,据说是因为如果\(a=b=c\)且都是偶数肯定\(-1\),否则设\(a\le ...

  2. 【一起来烧脑】读懂WebApp知识体系

    背景 很多小白知道什么是app,但是却不知道什么是webapp呢,webapp是指用HTML5编写的移动web应用 一个webapp可以在pc端,Android端,ios端进行运行 webapp开发的 ...

  3. Magma中ECC的点乘实例

    a:=-3;b:= 41058363725152142129326129780047268409114441015993725554835256314039467401291;E:= Elliptic ...

  4. 【洛谷】P2568 GCD

    前言 耻辱,我这个OI界的耻辱! 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对.输入格式  一个整数N输出格式答案输入输出样例  输入  4  ...

  5. 中山纪中集训Day5叒是测试(划淼)

    A组T1 矩阵游戏(game) 九校联考24OI__D1T1 问题描述 LZK发明一个矩阵游戏,大家一起来玩玩吧,有一个N行M列的矩阵.第一行的数字是1,2,…M,第二行的数字是M+1,M+2…2*M ...

  6. go的flag模块使用例子

    package main import ( "flag" "fmt" "strconv" ) func main() { port := f ...

  7. SQLEXPR_x64_CHS、SQLEXPRADV_x64_CHS、SQLEXPRWT_x64_CHS、SqlLocalDB、SQLManagementStudio_x64_CHS各版本说明

    LocalDB (SqlLocalDB)LocalDB 是 Express的一种轻型版本,该版本具备所有可编程性功能,但在用户模式下运行,并且具有快速的零配置安装和必备组件要求较少的特点.如果您需要通 ...

  8. Open vSwitch系列实验(三):Open vSwitch的VxLAN隧道网络实验

    1 实验目的 该实验通过Open vSwitch构建Overlay的VxLAN网络,更直观的展现VxLAN的优势.在实验过程中,可以了解如何建立VxLAN隧道并进行配置,并实现相同网段和不同网段之间的 ...

  9. IntelliJ IDEA悬停鼠标显示方法详细信息

    1.如果View -> Toolbar勾选情况下, 直接点击按钮打开设置, 或是直接点击File -> Settings(或是快捷键)打开设置窗口. 2.搜索栏中输入Show quick ...

  10. ntpd服务

    yum -y install ntp 服务器端 [root@ip-172-31-6-148~]# vim /etc/ntp.conf ...# Use public servers from thep ...