黑马程序员技术交流社区

标题: 多线程 代码运行错误 求正解 [打印本页]

作者: 王延龙    时间: 2013-6-26 17:11
标题: 多线程 代码运行错误 求正解
本帖最后由 孙百鑫 于 2013-6-30 08:55 编辑

//通过继承Thread类实现多线程
public class Show{

        public static void main(String[] args){
        
                Thread t1 = new PrintChar('a', 100);
                Thread t2 = new PrintChar('b', 100);
                Thread t3 = new PrintNum(100);//此语句出错

                t1.start();
                t2.start();
                t3.start();
        }
}

class PrintChar extends Thread{
//数据域
        private char printToChar;// char型变量 需打印的字母
        private int time;// int型变量 需打印的次数

        public PrintChar(char c, int t){//构造函数 用于初始化
        
                printToChar = c;
                time = t;
        }

        public void run(){//覆写run方法
        
                for(int i = 0; i < time; i++){
               
                        System.out.print(printToChar);
                }
        }
}

class PrintNum extends Thread{

        private int lastNum;

        private PrintNum(int n){
        
                lastNum = n;
        }

        public void run(){
        
                for(int i = 1; i <= lastNum; i++){
               
                        System.out.print(" "+i);
                }
        }
}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------
//后来又重写了一遍 貌似一样但是编译正常,Why
public class Show{
        public static void main(String[] args){                        Thread t1 = new PrintNum(100);                Thread t2 = new PrintChar('A',100);                t1.start();                t2.start();        }}
class PrintNum extends Thread{
        private int num;
        public PrintNum(int n){                        num = n;        }
        public void run(){                        for(int i = 1; i <= num; i++){                                        System.out.print(" "+i);                }        }}
class PrintChar extends Thread{
        private char printToChar;        private int printToTime;
        public PrintChar(char c, int t){                        printToChar = c;                printToTime = t;        }
        public void run(){                        for(int i = 1; i <= printToTime; i++){                                        System.out.print(" "+printToChar);                }        }}


捕获.PNG (4.31 KB, 下载次数: 0)

报错

报错

作者: 薛淑凯    时间: 2013-6-26 17:22
private PrintNum(int n){
        
                lastNum = n;
        }
你把构造函数给私有了,这怎么创建对象呢
作者: 刘_鑫    时间: 2013-6-26 21:34
private PrintNum(int n)  私有了 创建不了对象 改了就好了
作者: lkjghvcx@163.co    时间: 2013-6-27 10:10
是权限控制的问题,人家说得对,改一下就好了,后面写的不就改了么,还是不认真不仔细,跟我一样,呵呵
作者: 王延龙    时间: 2013-6-27 14:52
薛淑凯 发表于 2013-6-26 17:22
private PrintNum(int n){
        
                lastNum = n;

谢了,上网不太方便,没有及时回复见谅
作者: 王延龙    时间: 2013-6-27 14:54
刘_鑫 发表于 2013-6-26 21:34
private PrintNum(int n)  私有了 创建不了对象 改了就好了

谢谢指教,我懂了
作者: 王延龙    时间: 2013-6-27 14:55
lkjghvcx@163.co 发表于 2013-6-27 10:10
是权限控制的问题,人家说得对,改一下就好了,后面写的不就改了么,还是不认真不仔细,跟我一样,呵呵 ...

谢谢了,祝你技术分早过25,愿黑马再相会
作者: 郭伟杰    时间: 2013-6-28 11:38
构造函数你声明为私有的就没法在外面new对象了:)
作者: 孙百鑫    时间: 2013-6-30 08:55
楼主您好,帖子长时间没有动态我已经将您的帖子改成已解决。如有问题请私密我哦~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2