首页 > 其他分享 >线程执行顺序

线程执行顺序

时间:2023-03-17 15:48:19浏览次数:29  
标签:顺序 run thread void start 线程 执行 public

线程执行顺序

在做面试题的时候,发现有关线程执行顺序的一个常见考题:(纯纯考研审题)

package link;

public class Test {
    public static void main(String[] args) {
        Thread thread = new Thread() {
            @Override
            public void run() {
                pong();
            }
        };
        thread.run();
        System.out.println("ping");
    }

    static void  pong(){
        System.out.println("pong");
    }
}

上面这个程序中,在主线程中创建一个线程对象,审题不仔细就会出问题,以为考的是线程,谁知道这个线程调用的是run()方法,而不是start()方法,也就是说,还是只有一个主线程在执行,执行当然是先调用thread对象的run方法,再执行输出语句。
如果thread调用start方法,那么就是有两个线程,两个线程谁先执行完都有可能,所以出现‘pingpong’和‘pongping’都有可能。
ps:如果线程内部还有start方法如下,thread.start()并不是启动线程,只是调用这个普通方法罢了

class MyThread extends Thread{
 
	@Override
	public void run() {
		System.out.println("[thread] execute RUN");
	}
	
	public void start() {
		System.out.println("[method] execute RUN");
	}	
}

标签:顺序,run,thread,void,start,线程,执行,public
From: https://www.cnblogs.com/yliunyue/p/17227000.html

相关文章

  • 【python爬虫】bs4遍历、搜索文档树 bs4使用css选择器 selenium基本使用 selenium查
    目录上节回顾今日内容0bs4遍历文档树1bs4搜索文档树1.1find方法的其他参数2css选择器3selenium基本使用4无界面浏览器4.1模拟登录百度5selenium其它用法5.0查找标......
  • C# 多线程task
    C#多线程task1.异步和多线程的区别?没什么太大区别。异步是目的,使用多线程实现。想想AJAX异步加载,不就是不想让浏览器界面卡住嘛,所以在程序中对于某些单独的操作,比如写......
  • pytest学习和使用19-pytes断言失败后,怎样保持后续的断言继续执行?(pytest-assume)
    (19-pytes断言失败后,怎样保持后续的断言继续执行?(pytest-assume))1引入pytest使用assert进行断言,如果有多个断言,第一个失败了,那么后续的断言将不会执行;那么如果第一个断......
  • VUE父子组件生命周期执行顺序
    组件关系,HomeView与AboutView为同级,HelloWorld为HomeView的子组件刚进HomeView页面时更新HomeView页面更新HelloWorld页面切换到AboutView......
  • 自动执行SQL脚本
    在CodeSmith中,如果生成的代码是SQL脚本,则可以在生成代码完成时自动执行生成的代码,也就是在生成的SQL脚本的同时在数据库中创建新的对象。用BaseTemplates.ScriptUtility对......
  • 多线程 Task
    NetFramework4.0引入了一个新的关于异步操作的API,它叫做.任务并行库(TaskParallelLibrary,简称TPL),.NetFramework4.5版对该API进行了轻微的改进,使用更简单。TPL......
  • 多线程(下)
    并发编程(下)课程目标:掌握多进程开发的相关知识点并初步认识协程。今日概要:多进程开发进程之间数据共享进程锁进程池协程1.多进程开发进程是计算机中资源分配的......
  • 由于找不到vcruntime140_1.dll,无法继续执行代码重新安装程序可能会解决此问题
    电脑丢失vcruntime140_1.dll文件,会导致很多软件跟游戏打不开,也无法运行,比如常见的ps,pr,吃鸡游戏等等。那需要我们怎么修复呢?相信这个问题困扰着不少小伙伴,小编今天就把电脑提......
  • 【Python】使用 multiprocessing.dummy 执行多线程任务
    1.#-*-coding:utf-8-*-2.#frommultiprocessingimportPool多进程3.frommultiprocessing.dummyimportPoolasThreadPool#多线程4.importtime5.im......
  • redis开启多线程
    在Redis6.0中,非常受关注的第一个新特性就是多线程。在Redis6.0中,多线程默认是禁用的,只使用主线程。如果需要使用多线程功能,需要在redis.conf文件中进行配置(重启服务)。......