大家好,乐字节小乐有来咯,上次说完了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多线程的概念和优缺点就介绍到这,下一篇将会讲讲如何创建多线程。谢谢大家,请关注乐字节!

最新文章

  1. ios 关于问题 no matching provisioning profiles found
  2. Windows驱动——虚拟机 虚拟串口 双机调试
  3. FeWeb基础之JavaScript简介
  4. 使用scala开发spark入门总结
  5. 浅谈GridLayout(网格布局)
  6. 图解CSS的padding,margin,border属性
  7. windows 2008R2 无法安装操作系统补丁,或无法安装Sp1升级包的解决办法
  8. 实现Magento多文件上传代码功能开发
  9. Android窗口管理服务WindowManagerService对输入法窗口(Input Method Window)的管理分析
  10. linux中如何用root去修改其他用户的密码
  11. DOM操作-克隆元素
  12. RabbitMQ确认机制问题处理
  13. python 之栈的实现
  14. bzoj:1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名
  15. svn: resource out of date; try updating的解决
  16. 关于MySQL-python-1.2.3.tar.gz安装失败的解决方案
  17. selenium获取元素后用click()点击没有作用,用Keys.ENTER就可以成功
  18. git diff old mode 100644 new mode 100755
  19. ASP.NET Core 2.1 : 十二.内置日志、使用Nlog将日志输出到文件
  20. scrapy框架原理学习

热门文章

  1. 再做一遍floyed
  2. 软件工程实践2019第五次作业——结对编程的编程实现 version1.1
  3. Android反编译,apk反编译技术总结
  4. 10分钟彻底理解Redis持久化和主从复制
  5. 与 ES5 相比,React 的 ES6 语法有何不同?
  6. 关于如何取消访问https时的提示:“此网站的安全证书存在问题”的解决方法
  7. GCN: Graph Convolutional Network
  8. FineReport 交叉报表
  9. layui 鼠标悬停单元格显示全部
  10. Diffie-Hellman算法简介