Java多线程概念及优缺点,多线程的地位|乐字节
大家好,乐字节小乐有来咯,上次说完了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多线程概念及优缺点,多线程的地位|乐字节的更多相关文章
- Java多线程-概念与原理
一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在 ...
- Java多线程概念简介 多线程中篇(一)
Java的线程与操作系统的线程 在线程的相关介绍中,有讲到“线程的实现”分为三种:内核支持,用户级以及两者混合.(这只是一种简要的分类) Java线程在JDK1.2之前,是用户线程实现的 而在JD ...
- -1-5 java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中
本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait( ...
- java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)
今天开始就来总结一下Java多线程的基础知识点,下面是本篇的主要内容(大部分知识点参考java核心技术卷1): 1.什么是线程以及多线程与进程的区别 2.多线程的创建与启动 3.中断线程和守护线程以及 ...
- Java基础系列3:多线程超详细总结
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 1.线程概述 几乎所 ...
- Java进阶(三)多线程开发关键技术
原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...
- Java多线程父子线程关系 多线程中篇(六)
有的时候对于Java多线程,我们会听到“父线程.子线程”的概念. 严格的说,Java中不存在实质上的父子关系 没有方法可以获取一个线程的父线程,也没有方法可以获取一个线程所有的子线程 子线程的消亡与父 ...
- 第九节:详细讲解Java中的泛型,多线程,网络编程
前言 大家好,给大家带来详细讲解Java中的泛型,多线程,网络编程的概述,希望你们喜欢 泛型 泛型格式:ArrayList list= new ArrayList(); ArrayList list= ...
- JAVA在语言级支持多线程
进程:任务 任务并发执行是一个宏观概念,微观上是串行的. 进程的调度是有OS负责的(有的系统为独占式,有的系统为共享式,根据重要性,进程有优先级). 由OS将时间分为若干个时间片. JAVA在语言级支 ...
随机推荐
- linux安装sox,踩过坑的方法
参考文章 : https://blog.csdn.net/e_zhiwen/article/details/80037476 重新在源码中 执行一遍 ./configure --prefix=$HOM ...
- 课标2-2-1-3 :MMU配置与使用
void create_page_table(void){ unsigned long *ttb = (unsigned long *)0x20000000; unsigned long vaddr, ...
- make和rpm的编译、打包总结
1 make工具使用 1.1 makefile基本规则 Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作. Makefile的规则: tar ...
- Android启动活动的最佳写法
1.我们一般启动另一个活动的方式是: Intent intent = new Intent(MainActivity.this,SecondActivity.class); intent.putExt ...
- Tkinter 之事件绑定
import tkinter as tk window = tk.Tk() # 设置窗口大小 winWidth = 600 winHeight = 400 # 获取屏幕分辨率 screenWidth ...
- 沸腾换热UDF【转载】
#include "udf.h" //包括常规宏 #include "sg_mphase.h" // 包括体积分数宏 CVOF(C,T) #defi ...
- kafka集群搭建(图文并用)
将安装包上传服务器并解压 scp kafka_2.11-1.0.0.tgz username@{ip}:~/. mkdir /usr/local/kafka mv kafka_2.11-1.0.0.t ...
- vsnprintf和snprintf(vsnprintf就是为了支持va_list,实现对于sprint功能封装而做的)
vsnprintf和snprintf是C语言printf家族函数的成员,相关函数列表如下: #include <stdio.h> int printf(const char *format ...
- MiniUI treeGrid 树节点展开和不展开的性能差别很大
参考API: http://miniui.com/docs/api/index.html#ui=datagrid http://miniui.com/docs/api/index.html#ui=tr ...
- rm: cannot remove `xxx': Read-only file system
linux 中出现 Read-only file system - Aidon博客 - CSDN博客 https://blog.csdn.net/u010839779/article/details/ ...