0 0

打印Thread的对象怎么不是引用?5

public class TestMitiThread1 implements Runnable {
    public static void main(String[] args) {
        TestMitiThread1 test = new TestMitiThread1();
        System.out.println(test);           //TestMitiThread1@c17164
        Thread thread1 = new Thread(test);
        System.out.println(thread1);    //Thread[Thread-0,5,main]
    }

    public void run() {
    }
}


打印对象不应该是引用吗?怎么Thread和另外一个不一样呢?我看Thread.java里面就一个private void init,这是什么原因恩?
OO 
2011年10月25日 20:47

3个答案 按时间排序 按投票排序

0 0

采纳的答案

TestMitiThread1 test 和 Thread thread1 都不是一种类型,当然打印出来不一样了。Thread打印的结果是它的toString() 方法决定的(这个是java的最基础知识)

    public String toString() {
        ThreadGroup group = getThreadGroup();
	if (group != null) {
	    return "Thread[" + getName() + "," + getPriority() + "," + 
		           group.getName() + "]";
	} else {
	    return "Thread[" + getName() + "," + getPriority() + "," + 
		            "" + "]";
	}
    }

2011年10月26日 08:23
0 0

init()是做线程的初始化工作,包括为线程指定线程组、优先级、id等等

2011年10月26日 08:27
0 0

你这个线程似乎都没启动呀,thread1.start()启动线程,你是想要个什么效果呢?

2011年10月25日 20:58

相关推荐

    JavaThread.pdf

    - 启动线程通过调用Thread对象的start()方法实现。 2. **线程异常处理** - 当线程中抛出未捕获的异常时,可以设置一个自定义的Thread.UncaughtExceptionHandler来处理。 - 通过设置线程的...

    java面向对象程序设计习题大全

    4. **多态的应用**:通过父类引用调用子类对象,根据实际对象类型决定具体执行哪个版本的方法。 **例题解析**: 1. **选择题**: - 下列关于抽象类的说法中错误的是: - A) 抽象类中可以没有抽象方法。 - B) ...

    Thread类&java多线程(代码篇).pdf

    代码中的`ThreadDemo`类继承自`Thread`,并持有一个`ShareData`对象的引用。`ShareData`类包含一个静态的`String`变量`szData`,这个变量被两个线程`Thread1`和`Thread2`共享。在没有进行线程同步的情况下,两个线程...

    xstream 1.3.1.jar bean对象转换为xml

    此外,XStream还可以处理对象的引用,确保在XML中正确地表示对象之间的关系。 **使用XStream进行Bean到XML转换的步骤:** 1. **引入库**:首先,你需要在项目中引入XStream库,这可以通过添加对应的jar文件(如...

    OCJP认证-3期(PX017) 面向对象程序设计-API的使用.doc

    `main`方法中通过匿名内部类创建了一个`TestA`对象,并使用`println`打印这个对象。由于`toString()`方法被覆盖,输出将是"test"。因此,这段代码的结果将是打印"test"。 理解这些面向对象和API使用的知识点对于...

    Java线程使用同步锁交替执行打印奇数偶数的方法

    AThread 和 BThread 都持有 Num 对象的引用,并在 run 方法中使用 synchronized 关键字来访问 Num 对象。synchronized 关键字保证了在多个线程访问 Num 对象时,只有一个线程能够访问 Num 对象。 在 AThread 和 ...

    JVM 面试题总结.md

    2. **卡表**(Card Table):用于记录老年代对象引用到年轻代对象的情况,通常是一张二维表,每个单元格代表一个内存块,当发现老年代对象引用年轻代对象时,会将对应单元格标记为脏卡,以便后续处理。 记忆集和...

    《Java语言程序设计(一)》(课程代码04747).doc

    8. **多线程与Runnable接口**:实现Runnable接口并重写`run()`方法是创建线程的一种方式,然后需要在Thread对象中传递Runnable实例并调用`start()`方法启动线程。 9. **文件输入输出流**:对于按行处理字符流,...

    java基础(经典面向对象编程)

    4. **数据类型与变量**:Java有两大类数据类型:基本类型(如int、char、boolean)和引用类型(如类、接口、数组)。变量是存储数据的容器,声明时需要指定类型。 5. **控制流**:包括条件语句(if-else、switch)...

    东北大学2011复试java补习班资料

    选项D正确地描述了这种关系,即引用变量是指向对象的一个指针,而对象与引用变量的有效期并不一定一致,对象的存在并不依赖于引用变量,即使引用变量不存在,只要没有其他引用指向该对象,垃圾回收器会在适当时候...

    java面试宝典

    21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 10 22、我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,...

    java面试宝典2012版

    String不是基本数据类型,而是对象类型。基本数据类型有byte、short、int、long、float、double、char和boolean。 31. 字符串连接操作的结果? String对象不可变,连接操作后会生成新的String对象,原始对象不会...

    java面试讲题汇总-word可打印版

    2. == 和 equals 的区别:==比较的是两个对象的引用是否相同,而equals()方法在默认情况下也是比较对象引用,但可以被重写来比较对象内容。 3. final在Java中的作用:final用于声明常量、防止变量被重新赋值、确保...

    Java测试试题一套

    5. 引用对象变量和对象的关系:引用变量是对象的引用,它指向对象在内存中的位置。当引用变量不存在时,对象如果没有其他引用,将会被垃圾收集器回收。所以答案是D。 6. 程序执行结果:这段代码尝试访问数组的越界...

    2021-2022计算机二级等级考试试题及答案No.13798.docx

    3. 对象引用:在编程中,THIS关键字通常用来引用当前对象,而THISFORM通常用于引用当前表单。C选项的PARENT属性则用于引用对象的直接容器对象。 4. 列表框控件:列表框控件的List属性用于设置或返回控件中显示的...

    java 中Thread.join()的使用方法

    每个线程调用`thread.join()`,这里的`thread`就是前一个线程的引用,这样就确保了当前线程(比如`Domino`线程)会等待前一个线程(比如`Domino`线程的上一个实例)结束后再执行`System.out.println()`打印消息。...

    java打印当前方法名示例分享

    `Thread.currentThread()`方法返回当前线程的引用,而`getStackTrace()`则返回这个线程的堆栈跟踪元素数组。每个元素代表一个堆栈帧,对应于一个方法调用。因此,`getStackTrace()[1]`通常会返回当前方法的堆栈帧,...

    java多线程经典例程

    这种方式被称为“线程携带者”模式,因为 `Thread` 对象持有 `Runnable` 对象的引用,而不是直接继承 `Thread`。 3. **线程的生命周期**: - 当调用 `start()` 方法时,线程进入就绪状态,等待操作系统分配 CPU ...

    Java面试八股文2024最新版

    35. **堆与栈**:堆存储对象实例,栈存储基本类型和对象引用。 ### 垃圾回收 41. **HashMap长度**:2的幂次保证高效散列。 42. **ConcurrentHashMap**:线程安全的HashMap实现。 44. **垃圾收集算法**:包括标记-...

    JVM常见面试题.docx

    对象创建涉及类加载、内存分配、并发控制(如TLAB,Thread Local Allocation Buffer)和对象设置。内存溢出(OOM)通常发生在堆溢出,当无法分配新的对象实例时发生。这可能由于持续创建大量对象且无足够GC清理导致...

Global site tag (gtag.js) - Google Analytics