zoukankan      html  css  js  c++  java
  • 随笔——runnable勘误以及其他

       关于runnable,百度一下帖子无算,而无脑者甚众,可以看出java从业者素质差者居多,而葛龚莫辨、扞格难通者俯拾即是。

       以下一句是我随手拿的一个解释:

       在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口

       我们来看官方注释:

        Represents a command that can be executed. Often used to run code in a different Thread.

       我英文不好,勉强翻译过来大概是:

       代表一条可执行的指令,经常被用在另外的线程中执行代码

       就是说,它的本质是一条指令而已,定义上与多线程毫无瓜葛,只是作为一种手段被嵌入thread中,而很多博主所谓的第二种“实现Runnable接口”实现多线程实际上也是借助于new thread ,如果没有new thread,根本不会有多线程,所以java实现多线程只有一种:new thread。

       接下来我贴一下自己在android环境的测试记录:

        public void click(View v){
            Log.d("第一个activity 开启意图之前:", String.valueOf(System.currentTimeMillis()));
            startActivity(new Intent(MainActivity.this, SecondActivity.class));
            Log.d("第一个activity 开启意图之后:", String.valueOf(System.currentTimeMillis()));
            Log.d("main id:", String.valueOf(Thread.currentThread().getId()));
            v.postDelayed(new Runnable() {
                
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    Log.d("runnable id:", String.valueOf(Thread.currentThread().getId()));
                     finish();
                     Log.d("第一个activity finsh:", String.valueOf(System.currentTimeMillis()));
                }
            }, 2000);
           new Runnable() {
            
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    Log.d("runnable id2:", String.valueOf(Thread.currentThread().getId()));
                }
            }.run();
        
            new Thread(new Runnable() {
            
                @Override
                public void run() {
                   // TODO Auto-generated method stub
                    Log.d("thread id:", String.valueOf(Thread.currentThread().getId()));
                }
            }).start();
        }
    View Code

       以下是log:

        可以看到,只要没有new thread的话,都是主线程,管你有没有实现runnable呢。

        唉,现在的码农,真是越来越不成个样子了...

        另外备忘一条,android中,只要是说明文档中没有说明的,都按照同步操作来理解,比如startactivity(intent),异步操作一般都是有回调的,比如startanimation(animation)。

       新年快乐么么哒

  • 相关阅读:
    SQL盲注工具BBQSQL
    嗅探X-Windows服务按键工具xspy
    多协议底层攻击工具Yesinia
    LLMNR欺骗工具Responder
    Arduino可穿戴教程保存源文件与打开已经存在的源文件
    GRDB使用SQLite的WAL模式
    CString之GetBuffer与ReleaseBuffer
    VC++ 模块与资源分离
    KV6.60 SP1
    Html之head部分详解
  • 原文地址:https://www.cnblogs.com/gangmiangongjue/p/5194784.html
Copyright © 2011-2022 走看看