大家好,乐字节小乐有来咯,上次说完了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. Luogu3774 [CTSC2017]最长上升子序列 【Young表,根号分治】

    题目链接:洛谷 推荐阅读:2019年集训队论文<浅谈杨氏矩阵在信息学竞赛中的应用> 首先我们来看一个东西,叫做Young表. 它是长一个阶梯状的东西(行长和列长都是递减的),并且每一行和每 ...

  2. UOJ272. 【清华集训2016】石家庄的工人阶级队伍比较坚强 [FWT]

    UOJ 思路 很容易想到\(O(3^{3m}\log T)\)的暴力大矩乘,显然过不了. 我们分析一下每次转移的性质.题目给的转移方程是填表法,我们试着改成刷表法看看-- 发现好像没啥用. 注意到游戏 ...

  3. CAN信号转以太网究竟怎么回事?TCP转CAN又是什么?

    首先说说can总线. can总线是目前工业控制领域应用最广的现场总线,它可以实现远距离信息的传输,是各种设备和各类功能部件之间传送信息的公用通道,它是由导线组成的传输线束,用于连接体统中的各个节点,传 ...

  4. 【CSP模拟赛】Adore(状压dp 二进制)

    题目描述 小w偶然间见到了一个DAG.这个DAG有m层,第一层只有一个源点,最后一层只有一个汇点,剩下的每一层都有k个节点.现在小w每次可以取反第i(1<i<n-1)层和第i+1层之间的连 ...

  5. 可能需要用到的Mac技巧or软件

    1. Mac 打开任意来源 本博文链接:https://www.cnblogs.com/toulanboy/ 1.1. 打开 在终端中,输入命令sudo spctl --master-disable, ...

  6. Java上传视频(mencoder)

    页面: 上传文件时的关键词:enctype="multipart/form-data" <%@ page language="java" import=& ...

  7. QQ 有很多关于会员的标记,腾讯舍不得为每一个标记用 1 个字节 Byte,而用的是 1 比特 Bit。

    17年的实践:腾讯海量产品的技术方法论-其它分享/专项技术区 - 即时通讯开发者社区! http://www.52im.net/thread-159-1-1.html 腾讯QQ1.4亿在线用户的技术挑 ...

  8. [root@offical nginx]# nginx -t nginx: [emerg] module "/usr/lib64/nginx/modules/ngx_http_geoip_module.so" version 1012002 instead of 1016001 in /usr/share/nginx/modules/mod-http-geoip.conf:1 nginx: con

    [root@offical nginx]# nginx -tnginx: [emerg] module "/usr/lib64/nginx/modules/ngx_http_geoip_mo ...

  9. Linux_CentOS软件安装调试 源代码包编译安装和 二进制包配置

    Linux 下源代码(C 语言)如何编译(安装) 1. 先安装源代码编译的软件 gcc,make,openssl 如下: yum install -y gcc make gcc-c++ openssl ...

  10. 异常检测-基于孤立森林算法Isolation-based Anomaly Detection-3-例子

    参考:https://scikit-learn.org/stable/auto_examples/ensemble/plot_isolation_forest.html#sphx-glr-auto-e ...