欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java多线程概念及优缺点,多线程的地位|乐字节

程序员文章站 2022-06-05 20:15:24
大家好,乐字节小乐有来咯,上次说完了Java网络编程探究|乐字节,这次我们来看看线程相关的吧。 Java线程主要讲述的内容有: 1、线程概念 多线程,说白了就是多条执行路径,原来是一条路径,就主路径(main),现在是多条路径。就相当于高速路,原来是一条路,因为车多了,为提高使用效率,充分使用这条道 ......

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

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

Java多线程概念及优缺点,多线程的地位|乐字节

1、线程概念

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

Java多线程概念及优缺点,多线程的地位|乐字节

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

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

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;
}
}

Java多线程概念及优缺点,多线程的地位|乐字节

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;
}
}

Java多线程概念及优缺点,多线程的地位|乐字节

2、程序、进程与多线程

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

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

Java多线程概念及优缺点,多线程的地位|乐字节

注意:

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

 

3、多线程优缺点

1)、优点

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

2)、缺点

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

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

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

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

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

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

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

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

 

4、多线程地位

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

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

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

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

  • 创建线程的方式
  • sleep
  • 停止线程
  • thread.currentthread
  • 简单的 synchronized

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