多线程的三种实现

简介: 1、java多线程增强java多线程基本知识20.1进程介绍     不管是我们开发的应用程序,还是我们运行的其他的应用程序,都需要先把程序安装在本地的硬盘上。然后找到这个程序的启动文件,启动程序的时候,其实是电脑把当前的这个程序加载到内存中,在内存中需要给当前的程序分配一段独立的运行空间。这片空间就专门负责当前这个程序的运行。     不同的应用程序运行的过程中都需要在内存中分配自己

1、java多线程增强

java多线程基本知识

20.1进程介绍

     不管是我们开发的应用程序,还是我们运行的其他的应用程序,都需要先把程序安装在本地的硬盘上。然后找到这个程序的启动文件,启动程序的时候,其实是电脑把当前的这个程序加载到内存中,在内存中需要给当前的程序分配一段独立的运行空间。这片空间就专门负责当前这个程序的运行。

     不同的应用程序运行的过程中都需要在内存中分配自己独立的运行空间,彼此之间不会相互的影响。我们把每个独立应用程序在内存的独立空间称为当前应用程序运行的一个进程。

进程:它是内存中的一段独立的空间,可以负责当前应用程序的运行。当前这个进程负责调度当前程序中的所有运行细节。

20.2线程介绍

     启动的QQ聊天软件,需要和多个人进行聊天。这时多个人之间是不能相互影响,但是它们都位于当前QQ这个软件运行时所分配的内容的独立空间中。

     在一个进程中,每个独立的功能都需要独立的去运行,这时又需要把当前这个进程划分成多个运行区域,每个独立的小区域(小单元)称为一个线程。

线程:它是位于进程中,负责当前进程中的某个具备独立运行资格的空间。

进程是负责整个程序的运行,而线程是程序中具体的某个独立功能的运行。一个进程中至少应该有一个线程。

20.3多线程介绍

     现在的操作系统基本都是多用户,多任务的操作系统。每个任务就是一个进程。而在这个进程中就会有线程。

     真正可以完成程序运行和功能的实现靠的是进程中的线程。

多线程:在一个进程中,我们同时开启多个线程,让多个线程同时去完成某些任务(功能)。

多线程的目的:提高程序的运行效率。

20.4多线程运行的原理

     cpu在线程中做时间片的切换。

 

     其实真正电脑中的程序的运行不是同时在运行的。CPU负责程序的运行,而CPU在运行程序的过程中某个时刻点上,它其实只能运行一个程序。而不是多个程序。而CPU它可以在多个程序之间进行高速的切换。而切换频率和速度太快,导致人的肉看看不到。

每个程序就是进程, 而每个进程中会有多个线程,而CPU是在这些线程之间进行切换。

了解了CPU对一个任务的执行过程,我们就必须知道,多线程可以提高程序的运行效率,但不能无限制的开线程。

20.5实现线程的两种方式

1、继承Thread的原理

         见代码MyThreadWithExtends

package thread1;

 

import java.util.Random;

 

public class MyThreadWithExtends extends Thread {

    String flag;

   

    public MyThreadWithExtends(String flag) {

         this.flag = flag;

     }

   

    @Override

    public void run() {

    //获取当前线程的线程名

    String tname = Thread.currentThread().getName();

    System.out.println(tname + "线程的run方法被调用....");

    Random random = new Random();

    for (int i = 0; i < 20; i++) {

              try {

                   Thread.sleep(random.nextInt(10) * 100);

                   System.out.println(tname + "...."  + flag);

              } catch (Exception e) {

                   e.printStackTrace();

              }

         }

    }

   

    public static void main(String[] args) {

         Thread thread1 = new MyThreadWithExtends("a");

         Thread thread2 = new MyThreadWithExtends("b");

         thread1.start();

         thread2.start();

     }

}

 

2、声明实现 Runnable 接口的类

         见代码MyThreadWithImpliment

package thread1;

 

public class MyThreadWithImpliment implements Runnable {

     int x;

    

     public MyThreadWithImpliment(int x) {

         this.x = x;

     }

    

     @Override

     public void run() {

         String name = Thread.currentThread().getName();

         System.out.println("线程" + name + "run方法被调用....");

         for (int i = 0; i < 10; i++) {

              System.out.println(x);

              try {

                   Thread.sleep(100);

              } catch (Exception e) {

                   e.printStackTrace();

              }

         }

     }

 

     public static void main(String[] args) {

         Thread thread1 = new Thread(new MyThreadWithImpliment(1),"thread-1");

         Thread thread2 = new Thread(new MyThreadWithImpliment(2),"thread-2");

         thread1.start();

         thread2.start();

     }

}

 

3、还可以实现Callable接口

目录
相关文章
|
12月前
|
人工智能 缓存 并行计算
转载:【AI系统】CPU 计算本质
本文深入探讨了CPU计算性能,分析了算力敏感度及技术趋势对CPU性能的影响。文章通过具体数据和实例,讲解了CPU算力的计算方法、算力与数据加载之间的平衡,以及如何通过算力敏感度分析优化计算系统性能。同时,文章还考察了服务器、GPU和超级计算机等平台的性能发展,揭示了这些变化如何塑造我们对CPU性能的理解和期待。
转载:【AI系统】CPU 计算本质
|
JSON 监控 JavaScript
Node.js-API 限流与日志优化
Node.js-API 限流与日志优化
|
弹性计算 缓存 测试技术
2核4g服务器能支持多少人访问?卡不卡?
2核4g服务器能支持多少人访问?卡不卡?阿里云2核4g服务器能支持多少人访问?2核4G服务器并发数性能测试,阿小云账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素
|
iOS开发 Python
一个iOS噪音计模型、以及测量原理及分贝计算
最近在办公室觉得有点吵,然后忽然想做一个噪音计测试一下噪音,在App Store下载了几款测噪音软件,使用原来都大同小异。于是决定自己实现测噪音的原理。
1087 0
一个iOS噪音计模型、以及测量原理及分贝计算
企业商标如何保护?请关注这几点!
带您了解企业如何正确的保护商标
455 0
企业商标如何保护?请关注这几点!
|
Shell Linux
Linux 状态码
shell中运行的每个命令都使用退出状态码( exit status)告诉shell它已经运行完毕。退出状态码是一个0~ 255的整数值,在命令结束运行时由命令传给shell。可以捕获这个值并在脚本中使用。
400 0
|
存储 缓存 监控
TSO(Timestamp Ordering)
TSO(Timestamp Ordering)是一种常用的时钟同步机制,用于在分布式系统中保证时钟的一致性和事务的顺序性。去共识的TSO实现可以有效提高TSO的服务稳定性,以下是一些实现思路:
656 0
|
存储 弹性计算 安全
阿里云服务器ECS优势、功能、性能测速及应用场景介绍
阿里云服务器怎么样?什么是云服务器ECS?阿里云服务器怎么使用?阿里云服务器优缺点有哪些?阿里云百科分享阿里云服务器ECS优势、功能、性能测速及应用场景介绍
497 0
阿里云服务器ECS优势、功能、性能测速及应用场景介绍
|
数据安全/隐私保护 Windows
小白的第一天——远程连接Windows系统阿里云服务器
远程连接Windows系统阿里云服务器方式:①Workbench远程连接 ②VNC远程连接③发送远程命令(云助手)④本地Windows电脑直接连接
小白的第一天——远程连接Windows系统阿里云服务器
|
运维 监控 搜索推荐
DingTalk「开发者说」- 酷应用业务篇之:酷应用总体介绍
本篇主要讲解钉钉酷应用的总体概念、使用范围、具体案例等信息,带大家走进钉钉酷应用。
DingTalk「开发者说」- 酷应用业务篇之:酷应用总体介绍