`
luzl
  • 浏览: 572157 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Thread main方法中的Thread

    博客分类:
  • Java
阅读更多
package scjp;

public class Demo67 implements Runnable  
{  
    String myString = "Yes ";
    
    public void run()  
    {  
        this.myString = "No ";  
    }
    
    public static void main(String[] args)  
    {  
        Demo67 t = new Demo67();  
        Thread thread=new Thread(t); 
        System.out.println(thread.getId());
        System.out.println(Thread.currentThread().getId());
        for (int i=0; i < 10; i++)  
            System.out.print(t.myString);  
    }  
} 



打印结果是不确定的,为什么呢?是因为有两个线程一个是t,一个main里启动的主线程:

The 'main()' method in Java is referred to the thread that is running, whenever a Java program runs. It calls the main thread because it is the first thread that starts running when a program begins. Other threads can be spawned from this main thread. The main thread must be the last thread in the program to end. When the main thread stops, the program stops running.

Main thread is created automatically, but it can be controlled by the program by using a Thread object. The Thread object will hold the reference of the main thread with the help of currentThread() method of the Thread class.

--翻译
main()方法代表了正在运行的线程,因为任何Java程序的执行都首先生成main线程,其它线程都由其衍生,并且它是最后一个在程序中执行的线程,一旦main线程停止程序也就停止执行。
main线程是自动产生的,它可以被一个获得了main线程“引用”的 Thread 对象控制。这个方法是Thread.currentThread.
class MainThread 
{
    public static void main(String args [] ) 
    {
        Thread t = Thread.currentThread ( );

        System.out.println ("Current Thread : " + t);
        System.out.println ("Name : " + t.getName ( ) );
        System.out.println (" ");
        
        t.setName ("New Thread");
        System.out.println ("After changing name");
        System.out.println ("Current Thread : " + t);
        System.out.println ("Name : " + t.getName ( ) );
        System.out.println (" ");

        System.out.println ("This thread prints first 10 numbers");
        
        try 
        {
            for (int i=1; i<=10;i++) 
            {
                System.out.print(i);
                System.out.print(" ");
                Thread.sleep(1000);
            }
        } 
        catch (InterruptedException e) 
        {
            System.out.println(e); 
        }
   }
}




分享到:
评论

相关推荐

    java 的main方法

    主线程(即`main`方法所在的线程)会执行完自己的代码,包括打印`Main say:Hello,World`,而新启动的线程会在某个时间点执行其`run`方法中的代码。 了解线程对象和线程的区别很重要。线程对象是Java中的一个对象,...

    出现Exception in threadmain java.lang.NoClassDefFoundError的各种可能情况.doc

    在Java编程中,遇到“Exception in thread 'main' java.lang.NoClassDefFoundError”是一种常见的异常情况,这通常意味着JVM在运行时未能找到指定的类定义。此错误不同于ClassNotFoundException,后者发生在尝试加载...

    Android代码-mainthread和WorkerThread线程之间的通信助手库

    AndroidChannel is helper library for inter thread communication between main thread and worker thread. AndroidChannel uses HandlerThread for inter thread communication. Setup Gradle dependencies { .....

    Exception in thread “main“ java.util.InputMismatchException.pdf

    在这个特定的场景中,问题出在主线程("main"线程)中的数据输入处理。当程序期待从标准输入流接收到一个`int`类型的数值,但用户实际上输入了一个非整数的字符串,如字母或特殊字符,这时就会抛出这个异常。 为了...

    Android:Handler的post()方法和Thread的start()方法执行Thread的run()方法的区别

    * 在java中真正开启线程的方法是这样的。 */ Thread t = new Thread(r); t.start(); setContentView(R.layout.activity_main); System.out.println("Activity--&gt;"+ Thread.currentThread().getId()...

    Java10个Java经典的Main方法面试题!.pdf

    在面试中,Main方法相关的题目经常被用来测试候选人的基础知识和理解能力。以下将详细解析十个可能在Java面试中遇到的关于Main方法的经典问题。 1. **Main方法的签名是什么?** Main方法的签名是固定的,它必须是`...

    Java多线程——Thread类中run()方法和start()方法的区别.docx

    在Java多线程编程中,`Thread` 类的 `run()` 方法和 `start()` 方法扮演着不同的角色,它们之间的区别是理解并发执行的关键。 首先,`start()` 方法是真正启动新线程的方法。当你调用 `Thread` 对象的 `start()` ...

    10个Java经典的Main方法面试题!.zip

    是的,一个Java类中可以有多个Main方法,但JVM只会执行声明为`public static void main(String[] args)`的那个。 5. **如何运行包含Main方法的Java程序?** 使用`javac`编译器编译Java源文件,然后使用`java`命令...

    RT-Thread中文文档

    软件组件通常位于RT-Thread/components目录下的文件夹中,每个组件通过SConscript文件描述其构建细节,并通过RT-Thread的构建系统添加到最终的固件中。在RT-Thread3.0版本中引入的包管理器,使得软件组件更加以...

    rt-thread入门教程PPT

    * RT-Thread 的启动过程包括 SystemInit()、Main()、SystemInit()、$Sub$$main()、rtthread_startup()、rt_application_init() 和 main_thread_entry * RT-Thread 的内存管理包括堆栈的概念 * RT-Thread 的应用场景...

    Exception in thread main java.lang.NoClassDefFoundError错误解决方法

    `Exception in thread "main" java.lang.NoClassDefFoundError` 是Java编程中常见的一个运行时异常,通常发生在尝试运行一个Java程序时,如果JVM找不到在类路径(ClassPath)中定义的主要类(主类,即包含`public ...

    RT-Thread Studio与CubeMX联合编程例程

    在这个“RT-Thread Studio与CubeMX联合编程例程”中,我们将探讨如何将这两个工具结合使用,以提高STM32系列单片机开发的效率和便利性。首先,我们需要了解STM32CubeMX的基本用法。通过CubeMX,我们可以选择合适的...

    Java中main()方法浅析.docx

    ### Java中main()方法浅析 #### 一、概述 在Java编程语言中,`main()`方法具有特殊的意义,它是所有Java应用程序的起点。当Java虚拟机(JVM)启动并加载了一个包含`main()`方法的类时,它会自动调用这个方法来开始...

    tcl thread 在linux 下的安装包

    puts "Main thread finished." ``` 这段代码会创建一个新的线程,并在其中打印一条消息,然后主线程等待新线程结束,最后主线程输出一条消息。需要注意的是,线程间的通信和同步可能需要使用`thread::send`命令以及...

    Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享

    NULL 博文链接:https://dsqiu.iteye.com/blog/2028503

    Exception in thread main java.lang.UnsatisfiedLinkError解决.doc

    Exception in thread main java.lang.UnsatisfiedLinkError解决

    Java中Thread.start()和Thread.run()的区别.docx

    在Java编程语言中,理解和掌握线程的使用是至关重要的,特别是`Thread.start()`和`Thread.run()`这两个方法。它们在多线程编程中扮演着关键角色,但有着明显的区别。 首先,`Thread.start()`方法的主要作用是启动一...

    Exception in thread \"main\" java.lang.LinkageError错误的解决

    NULL 博文链接:https://utopialxw.iteye.com/blog/1138133

    Java Thread用法 经典

    Java中的线程主要通过`java.lang.Thread`类来创建和管理。 #### 二、线程创建方式 在Java中,可以通过以下两种方式创建线程: 1. **继承Thread类:** 创建一个新的类,使其继承自`Thread`类,并重写`run()`方法。...

    认识Thread和Runnable

    run 方法只是 Thread 的一个普通方法,如果直接调用 Run 方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待 run 方法体执行完毕后才可继续执行下面的代码,这样就没有...

Global site tag (gtag.js) - Google Analytics