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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1黑马币


  1. class R implements Runnable
  2. {
  3.         public void run()
  4.         {
  5.                 System.out.println("Runnable...run");
  6.         }
  7. }

  8. public class ThreadTest2
  9. {

  10.         public static void main(String[] args)
  11.         {
  12.                 R r=new R();
  13.                 new Thread(r)
  14.                 {
  15.                         public void run()
  16.                         {
  17.                                 System.out.println("subThread...run");
  18.                         }
  19.                 }.start();
  20.         }        
  21. }
复制代码

这段代码里的这个对象是个什么样的对象?
  1. new Thread(r)
  2. {
  3. public void run()
  4. {
  5. System.out.println("subThread...run");
  6. }
  7. };
复制代码

求真正的大神教我,半桶水的就不要来误导我了

最佳答案

查看完整内容

至于匿名内部类 因为只是用一次,所以不需要单独建一个类继承Thread接口,就产生了这种写法 new Thread(){};在花括号中重写Thread的run方法的话 ,相当于直接建立了一个Thread的子类,重写了run方法。new Thread() public void run(){ }; 这样创建的其实是一个对象 直接加 .start() 是在用对象调用方法

5 个回复

倒序浏览
至于匿名内部类
因为只是用一次,所以不需要单独建一个类继承Thread接口,就产生了这种写法
new Thread(){};在花括号中重写Thread的run方法的话 ,相当于直接建立了一个Thread的子类,重写了run方法。new Thread() public void run(){  }; 这样创建的其实是一个对象 直接加   .start() 是在用对象调用方法

回复 使用道具 举报
这段代码里面是在定义一个匿名内部类!
回复 使用道具 举报
开启线程有两种方法一种就是R类继承Runnable,然后重写run方法,main函数启动时,需要先实例化R,即R r = new R(),然后创建Thread类即
Thread thread = new Thread(r),需要注意一点就是 把r传入Thread。然后利用 thread.start(),启动线程,其实start是在调用r对象的
run()方法

  1. class R implements Runnable
  2. {
  3.         public void run()
  4.         {
  5.                 System.out.println("Runnable...run");
  6.         }
  7. }
  8. public class ThreadTest2
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 R r=new R();
  13.                 Thread thread = new Thread(r);
  14.                 thread.start();            
  15.         }        
  16. }
复制代码




回复 使用道具 举报
第二种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。
  1. class PrimeThread extends Thread {
  2.         public void run() {
  3.       System.out.println("PrimeThread.....run");
  4.     }
  5. }
  6. public class ThreadTest2
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 PrimeThread pt = new PrimeThread();
  11.                 pt.start();            
  12.         }        
  13. }
复制代码



回复 使用道具 举报
就只是一个匿名的线程类,重写了run方法,在线程thread调用start()方法的时候自动调用run()方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马