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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 天涯海角 中级黑马   /  2013-8-13 15:54  /  1864 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程的创建方式一
class Qing extends Thread
{
        public void run(){
                for(int x=0;x<10;x++)
                        System.out.println("Qing run"+x);
        }
        }

public class ThreadQing {
        public static void main(String[]args){
                Qing Q=new Qing();
                Q.start();
                for(int x=0;x<10;x++)
                        System.out.println("hi"+x);
        }
多线程创建方式二
class Qing implements Runnable
{
      voicd run()
      {
           for(int x=0;x<10;x++)
           {
                System.out.println("run"+x);
           }
   
      }
}
public class Test
{
        public static void main(String[] args)
        {
               Qing q=new Qing();
               Thread t=new Thread(q);
               t.start();
               for(int x=0;x<6;x++)
               System.out.println("Test"+x);

        }
}
我想问一下问什么第一种线程创建方式的主线程的for循环可以运行,而第二种的主线程的for循环却不能运行。

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 py强子 于 2013-8-13 16:19 编辑

第二个线程,主线程不但不运行,而且还会报错;
因为run()方法的权限问题;
Qing继承Runnable,也就是说实现类覆盖父类方法的权限不能小于父类;
将run()方法修饰成public就OK啦;
还有run方法的返回类型void,写成voicd更报错啊;故意的吧!

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

回复 使用道具 举报
顶楼上。。除了代码有错外,代码也能够正常运行,修改后不错在主线程的for循环不能运行的问题!!我觉得这位亲因该是说明白子集想问的问题吧??
回复 使用道具 举报
py强子 发表于 2013-8-13 16:16
第二个线程,主线程不但不运行,而且还会报错;
因为run()方法的权限问题;
Qing继承Runnable,也就是说 ...

在run方法上加public,为什么主函数上的for还是不能运行
回复 使用道具 举报
天涯海角 发表于 2013-8-14 14:36
在run方法上加public,为什么主函数上的for还是不能运行

我都替你运行过啦;可以的!
for不运行还是报错?
回复 使用道具 举报
测过了,主线程可以运行。
  1. class Qing implements Runnable
  2. {
  3.       public void run()
  4.       {
  5.            for(int x=0;x<10;x++)
  6.            {
  7.                 System.out.println("run"+x);
  8.            }
  9.    
  10.       }
  11. }
  12. public class Test1
  13. {
  14.         public static void main(String[] args)
  15.         {
  16.                Qing q=new Qing();
  17.                Thread t=new Thread(q);
  18.                t.start();
  19.                for(int x=0;x<6;x++)
  20.                System.out.println("Test"+x);

  21.         }
  22. }
复制代码
运行结果:
Test0
Test1
Test2
Test3
Test4
Test5
run0
run1
run2
run3
run4
run5
run6
run7
run8
run9

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马