您现在的位置是:亿华云 > 人工智能
看完这篇Java多线程的讲解,思路突然就清晰了...
亿华云2025-10-08 21:06:43【人工智能】4人已围观
简介线程是进程中的一个独立控制单元,线程在控制着进程的执行,一个进程中至少有一个线程。多线程可以更好地利用cpu的资源,线程之间还能进行数据共享。在Java中,一个线程是指进程中的一个执行流程,一个进程可
线程是看完进程中的一个独立控制单元,线程在控制着进程的多的讲执行,一个进程中至少有一个线程。线程晰多线程可以更好地利用cpu的解思资源,线程之间还能进行数据共享。然清
在Java中,看完一个线程是多的讲指进程中的一个执行流程,一个进程可以运行多个线程,线程晰Java中每个线程都有一个调用栈,解思即使不在程序中创建任何新的然清线程,也有一个main()方法运行在一个线程内,看完称为主线程,多的讲一旦创建一个新的线程晰线程,就产生一个新的解思调用栈。
多线程的然清基本概念
线程指进程中的一个执行场景,也就是执行流程,那么进程和线程有什么区别呢?
每个进程是一个应用程序,都有独立的源码库内存空间 同一个进程中的线程共享其进程中的内存和资源(共享的内存是堆内存和方法区内存,栈内存不共享,每个线程有自己的。)
什么是进程?
一个进程就是一个应用程序。在操作系统中每启动一个应用程序就会相应的启动一个进程。例如:千千静听进程,魔兽进程,Word 进程,QQ 进程,JVM 启动对应一个进程。
系统引入多进程的作用?
最初的计算机是“单进程的”,计算机只能运行一个应用程序,例如第一台计算机只有DOS 窗口。现代的计算机可以满足我们一边听音乐,一边玩游戏。现代的计算给我们人类感觉:多件事情一起运行。感觉是并行的(错觉)。b2b信息网
对于单核的计算机来讲,在某一个时间点上只能做一件事情,但是由于计算机的处理速度 很高,多个进程之间完成频繁的切换执行,这个切换速度使人类产生了错觉,人类的错觉是:
多个进程在同时运行。
计算机引入多进程的作用:提高 CPU 的使用率。
重点:进程和进程之间的内存独立。什么是线程?
线程是进程的一个执行场景。一个进程可以启动多个线程。
进程引入多线程的作用?
提高进程的使用率。
重点:线程和线程之间栈内存独立,堆内存和方法区内存共享。一个线程一个栈。描述 java 程序的执行原理:
java命令执行会启动 JVM,JVM的启动表示启动一个应用程序,表示启动了一个进程。站群服务器该进程会自动启动一个“主线程”,然后主线程负责调用某个类的 main 方法。所以 main 方法的执行是在主线程中执行的。然后通过main 方法代码的执行可以启动其他的“分支线程”。
所以,main 方法结束程序不一定结束,因为其他的分支线程有可能还在执行。
线程的创建和启动
Java 虚拟机的主线程入口是main 方法,用户可以自己创建线程,创建方式有两种:
继承 Thread 类 实现Runnable 接口(推荐使用Runnable 接口)继承 Thread 类
Thread 类中创建线程最重要的两个方法为:
public void run() public void start()采用 Thread 类创建线程,用户只需要继承 Thread,覆盖 Thread 中的run 方法,父类 Thread 中的run 方法没有抛出异常,那么子类也不能抛出异常,最后采用start 启动线程即可
【示例代码】,不使用线程
public class ThreadTest01 { public static void main(String[] args) { Processor p = new Processor(); p.run(); method1(); } private static void method1() { System.out.println("--------method1() "); } } class Processor { public void run() { for (int i=0; i<10; i++) { System.out.println(i); } } }
以上顺序输出相应的结果(属于串行),也就是run 方法完全执行完成后,才执行method1 方法,也就是method1 必须等待前面的方法返回才可以得到执行,这是一种“同步编程模型”
【代码示例】,使用线程
public class ThreadTest02 { public static void main(String[] args) { Processor p = new Processor(); //手动调用该方法 //不能采用run 来启动一个场景(线程), //run 就是一个普通方法调用 //p.run(); //采用start 启动线程,不是直接调用run //start 不是马上执行线程,而是使线程进入就绪 //线程的正真执行是由Java 的线程调度机制完成的 p.start(); //只能启动一次 //p.start(); method1(); } private static void method1() { System.out.println("--------method1() "); } } class Processor extends Thread { //覆盖 Thread 中的run 方法,该方法没有异常 //该方法是由java 线程掉机制调用的 //我们不应该手动调用该方法public void run() { for (int i=0; i<10; i++) { System.out.println(i); } } }通过输出结果大家会看到,没有顺序执行,而在输出数字的同时执行了 method1()方法,如果从效率上看,采用多线程的示例要快些,因为我们可以看作他是同时执行的,mthod1()方法没有等待前面的操作完成才执行,这叫“异步编程模型”
实现 Runnable 接口
其实 Thread 对象本身就实现了Runnable 接口,但一般建议直接使用 Runnable接口来写多线程程序,因为接口会比类带来更多的好处
【示例代码】
public class ThreadTest03 { public static void main(String[] args) { //Processor r1 = new Processor(); Runnable r1 = new Processor(); //不能直接调用run //p.run(); Thread t1 = new Thread(r1); //启动线程t1.start(); method1(); } private static void method1() { System.out.println("--------method1() "); } } //实现Runnable 接口 class Processor implements Runnable { //实现Runnable 中的run 方法 public void run() { for (int i=0; i<10; i++) { System.out.println(i); } } }
很赞哦!(94)
相关文章
- 2、根据用户基础选择访问提供程序。由于互联问题的存在,接入商的选择也非常重要,如果用户群主要在联通,尽量选择联通接入较好的接入商,如果用户群主要在电信,那么选择电信接入较好的接入商。如果用户组位于国家/地区,则选择更好的访问提供程序进行交互。
- 这个不用多说,不同平台的注册价格不同,且不同平台对域名释放交易的把控与曝光不同,当然价格相对便宜且平台渠道广操作便利的平台最好。
- 为什么喜欢国外注册域名?国外注册域名注意什么?
- 比较短的域名方便用户记忆和传播,它带来的好处往往会超过其他类型的域名,如果你非要域名短而且还要包含关键词,那么往往会事与愿违,现在这种域名基本上是可遇而不可求的。
- 主流搜索引擎显示的相关搜索项越多,越能积极反映该域名的市场价值。同时,被评估域名的搜索引擎显示结果不佳可能是由于以下两个原因:
- 2、根据用户基础选择访问提供程序。由于互联问题的存在,接入商的选择也非常重要,如果用户群主要在联通,尽量选择联通接入较好的接入商,如果用户群主要在电信,那么选择电信接入较好的接入商。如果用户组位于国家/地区,则选择更好的访问提供程序进行交互。
- 公司名字不但要与其经营理念、活动识别相统一,还要能反映公司理念,服务宗旨、商品形象,从而才能使人看到或听到公司的名称就能产生愉快的联想,对商店产生好感。这样有助于公司树立良好的形象。
- 以上的就是为大家介绍的关于域名的详解域名注册:域名注册0
- 为什么喜欢国外注册域名?国外注册域名注意什么?
- 6、提示添加成功,点击确认进行最后的确定操作。一般10分钟就解析生效,可以用域名进行访问了。