-
打印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,这是什么原因恩?2011年10月25日 20:47
3个答案 按时间排序 按投票排序
-
采纳的答案
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
相关推荐
- 启动线程通过调用Thread对象的start()方法实现。 2. **线程异常处理** - 当线程中抛出未捕获的异常时,可以设置一个自定义的Thread.UncaughtExceptionHandler来处理。 - 通过设置线程的...
4. **多态的应用**:通过父类引用调用子类对象,根据实际对象类型决定具体执行哪个版本的方法。 **例题解析**: 1. **选择题**: - 下列关于抽象类的说法中错误的是: - A) 抽象类中可以没有抽象方法。 - B) ...
代码中的`ThreadDemo`类继承自`Thread`,并持有一个`ShareData`对象的引用。`ShareData`类包含一个静态的`String`变量`szData`,这个变量被两个线程`Thread1`和`Thread2`共享。在没有进行线程同步的情况下,两个线程...
此外,XStream还可以处理对象的引用,确保在XML中正确地表示对象之间的关系。 **使用XStream进行Bean到XML转换的步骤:** 1. **引入库**:首先,你需要在项目中引入XStream库,这可以通过添加对应的jar文件(如...
`main`方法中通过匿名内部类创建了一个`TestA`对象,并使用`println`打印这个对象。由于`toString()`方法被覆盖,输出将是"test"。因此,这段代码的结果将是打印"test"。 理解这些面向对象和API使用的知识点对于...
AThread 和 BThread 都持有 Num 对象的引用,并在 run 方法中使用 synchronized 关键字来访问 Num 对象。synchronized 关键字保证了在多个线程访问 Num 对象时,只有一个线程能够访问 Num 对象。 在 AThread 和 ...
2. **卡表**(Card Table):用于记录老年代对象引用到年轻代对象的情况,通常是一张二维表,每个单元格代表一个内存块,当发现老年代对象引用年轻代对象时,会将对应单元格标记为脏卡,以便后续处理。 记忆集和...
8. **多线程与Runnable接口**:实现Runnable接口并重写`run()`方法是创建线程的一种方式,然后需要在Thread对象中传递Runnable实例并调用`start()`方法启动线程。 9. **文件输入输出流**:对于按行处理字符流,...
4. **数据类型与变量**:Java有两大类数据类型:基本类型(如int、char、boolean)和引用类型(如类、接口、数组)。变量是存储数据的容器,声明时需要指定类型。 5. **控制流**:包括条件语句(if-else、switch)...
选项D正确地描述了这种关系,即引用变量是指向对象的一个指针,而对象与引用变量的有效期并不一定一致,对象的存在并不依赖于引用变量,即使引用变量不存在,只要没有其他引用指向该对象,垃圾回收器会在适当时候...
21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 10 22、我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,...
String不是基本数据类型,而是对象类型。基本数据类型有byte、short、int、long、float、double、char和boolean。 31. 字符串连接操作的结果? String对象不可变,连接操作后会生成新的String对象,原始对象不会...
2. == 和 equals 的区别:==比较的是两个对象的引用是否相同,而equals()方法在默认情况下也是比较对象引用,但可以被重写来比较对象内容。 3. final在Java中的作用:final用于声明常量、防止变量被重新赋值、确保...
5. 引用对象变量和对象的关系:引用变量是对象的引用,它指向对象在内存中的位置。当引用变量不存在时,对象如果没有其他引用,将会被垃圾收集器回收。所以答案是D。 6. 程序执行结果:这段代码尝试访问数组的越界...
3. 对象引用:在编程中,THIS关键字通常用来引用当前对象,而THISFORM通常用于引用当前表单。C选项的PARENT属性则用于引用对象的直接容器对象。 4. 列表框控件:列表框控件的List属性用于设置或返回控件中显示的...
每个线程调用`thread.join()`,这里的`thread`就是前一个线程的引用,这样就确保了当前线程(比如`Domino`线程)会等待前一个线程(比如`Domino`线程的上一个实例)结束后再执行`System.out.println()`打印消息。...
`Thread.currentThread()`方法返回当前线程的引用,而`getStackTrace()`则返回这个线程的堆栈跟踪元素数组。每个元素代表一个堆栈帧,对应于一个方法调用。因此,`getStackTrace()[1]`通常会返回当前方法的堆栈帧,...
这种方式被称为“线程携带者”模式,因为 `Thread` 对象持有 `Runnable` 对象的引用,而不是直接继承 `Thread`。 3. **线程的生命周期**: - 当调用 `start()` 方法时,线程进入就绪状态,等待操作系统分配 CPU ...
35. **堆与栈**:堆存储对象实例,栈存储基本类型和对象引用。 ### 垃圾回收 41. **HashMap长度**:2的幂次保证高效散列。 42. **ConcurrentHashMap**:线程安全的HashMap实现。 44. **垃圾收集算法**:包括标记-...
对象创建涉及类加载、内存分配、并发控制(如TLAB,Thread Local Allocation Buffer)和对象设置。内存溢出(OOM)通常发生在堆溢出,当无法分配新的对象实例时发生。这可能由于持续创建大量对象且无足够GC清理导致...