美文网首页Android实用技术
日更(十三)-Android-线程

日更(十三)-Android-线程

作者: Jlanglang | 来源:发表于2019-01-13 21:05 被阅读19次

    瞎扯

    感觉标题还是不要写挑战了,有点逗
    今天写的...
    其实我对线程也不是特别熟练.
    写写我自己的理解,不是写怎么用线程.

    线程

    程序执行流的最小单元

    每个线程都会从最头执行到return

    这里我觉得需要有个概念.

    我们写的app是怎么运行的.

    main函数

    都知道是程序的入口.

    那么,从程序启动,到main函数运行.
    是不是可以理解成
    底层开启一个线程调用了main函数方法.

     new Thread(){
                @Override
                public void run() {
                    super.run();
                    main();
                }
            }.start();
    

    而我们的app之所以,能一直响应.
    无非是main里面Looper死循环这种的.

    其实不管什么程序.本质上都是死循环.
    保证线程不结束,循环内不停的处理逻辑.

    无非是函数套函数.一直不停套下去.

    fun a() {
        val x = 1;
    }
    
    fun b() {
        val y = 2;
    }
    
    fun c() {
        val x = 1;
        val y = 2;
    }
    

    把a和b放一个线程.
    把c放一个线程.

    其线程里的内容就是一样的
    线程从头执行到结束.

    有人说,你这不废话吗.

    我也觉得是废话.

    但是,线程的本质就是这样.
    哪怕写出花来.

    它的本质还是从第一行一直执行到结束.从上到下不停的跑.

    所以,能否可以理解成

    硬件设备启动系统是一个固定的入口
    这个入口,启动各种进程
    进程启动着线程
    线程跑着代码.

    线程打比喻的话就是

    一个人看书,必须按书上的内容和条件从第一行按顺序看.
    然后看到第十页的第三行的时候.告诉这个人,要从头看一次.
    这个人就这样,不停的看不停的看.

    书上的内容就是我们写的代码.

    线程的源码

    
        public synchronized void start() {
    
            if (threadStatus != 0 || started)
                throw new IllegalThreadStateException();
    
            group.add(this);
    
            started = false;
            try {
                nativeCreate(this, stackSize, daemon);
                started = true;
            } finally {
                try {
                    if (!started) {
                        group.threadStartFailed(this);
                    }
                } catch (Throwable ignore) {
                }
            }
        }
    
      private native static void nativeCreate(Thread t, 
    long stackSize, boolean daemon);
    

    可以看到这个nativeCreate是jni方法.

    我猜底层无非创建了线程对象,然后再调用java的这个thread的run()方法.

    说到这,

    我又想起了,多线程,本质上是cpu在不停的切换处理不同的请求.只不过速度很快而已.
    cpu的一个核心同一时间也只会处理一个请求.


    好了,今天就这样了
    每天日更,能准备找资料的时间几乎没有,基本是全裸上阵,全靠经验,哈哈
    挑战的地方就在这里了.
    今天有点水
    感觉程序员日更题目还是很好找的.但是想写对,写精还是很难

    您的喜欢与回复是我最大的动力-_-
    交流群:493180098

    相关文章

      网友评论

        本文标题:日更(十三)-Android-线程

        本文链接:https://www.haomeiwen.com/subject/djbldqtx.html