转载

随笔——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:

随笔——runnable勘误以及其他

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

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

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

新年快乐么么哒

原文  http://www.cnblogs.com/gangmiangongjue/p/5194784.html
正文到此结束
Loading...