A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xuehuayous 中级黑马   /  2014-4-2 19:59  /  1012 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xuehuayous 于 2014-4-6 10:26 编辑

复习多线程的时候,突然想到一种写法,运行结果正确,可是自己解释不通了,求大侠帮忙分析下,谢谢
  1. package com.itheima;

  2. public class Test{
  3.         public static void main(String[] args) {
  4.                 new Thread(new Runnable() {
  5.                         public void run() {
  6.                                 for(int i=0; i<100; i++) {
  7.                                         System.out.println("new thread------>run" + i);
  8.                                 }                                
  9.                         }
  10.                 }).start();
  11.                
  12.                 for(int i=0; i<100; i++)
  13.                         System.out.println("main------->run" + i);
  14.         }
  15. }
复制代码




5 个回复

倒序浏览
什么解释不通,匿名内部类 想不通?
回复 使用道具 举报
这个是把线程执行的任务封装到了Runnable对象的run方法中。然后把封装有线程任务的Runnable对象传递给了Thread的构造方法。这样其实是Thread在指挥Runnable对象做事情。这是最接近面向对象的。这也是我们使用的最多的一种。使用这种方式可以实现多个线程共享同一个数据。

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报

  1. public class Test{
  2.         public static void main(String[] args) {
  3.                 new Thread(new Runnable() {        //就是new Thread(里面放入使用Runnable接口的类);
  4.                         public void run() {                //重写里面的run放法
  5.                                 for(int i=0; i<100; i++) {
  6.                                         System.out.println("new thread------>run" + i);
  7.                                 }                                
  8.                         }
  9.                 }).start();                        //这里就是Thread.start();
  10.                
  11.                 for(int i=0; i<100; i++)
  12.                         System.out.println("main------->run" + i);
  13.         }
  14. }
复制代码



其实就是这个的匿名类写法:
  1. public class Test implements Runnable {
  2.         
  3.         
  4.         public static void main(String[] args) {
  5.                 Test td1 = new Test();
  6.                 Thread t1 = new Thread(td1);
  7.                 t1.start();
  8.                 for(int i=0; i<100; i++)
  9.                     System.out.println("main------->run" + i);
  10.         }
  11.         
  12.                 public void run() {
  13.                          for(int i=0; i<100; i++) {
  14.                          System.out.println("new thread------>run" + i);
  15.                 }
  16.         }
  17. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
在实现接口时都可以这样用匿名内部类啊。
回复 使用道具 举报
匿名内部类Runnable传递给Thread构造方法,new出的线程和主线程交替运行,什么叫解释不通??
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马