多线程1------------创建线程的两种方法

package ThreadTest;

public class TraditionalThread01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		Thread thread = new Thread(){};//这种写法是Thread的子类
		Thread thread = new Thread(){
			@Override
			public void run() {
				while(true){
					try {
						Thread.sleep(500);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.out.println("1"+Thread.currentThread().getName());//Thread.currentThread()表示当前线程
					System.out.println("2"+this.getName());//this 代表run方法所在的对象

				}
			}

		};
		thread.start();
//		System.out.println(Thread.currentThread().getName());//main
	}

}

  

注意下this表示执行run方法的对象,并不一定是线程,也可能是runnable对象

package ThreadTest;

public class TraditionalThread2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // Thread thread1 = new Thread(){};//这种写法是Thread的子类
        Thread thread1 = new Thread() {// 这种方式覆盖父类的run方法
            @Override
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    System.out.println("1" + Thread.currentThread().getName());// Thread.currentThread()表示当前线程
//                    System.out.println("2" + this.getName());// this 代表run方法所在的对象

                }
            }

        };
        thread1.start();

        Thread thread2 = new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.out.println("11" + Thread.currentThread().getName());// Thread.currentThread()表示当前线程

                // this 代表run方法所在的对象,是runnable对象,他不是线程没有getName方
                // System.out.println("222"+this.getName());

            }
        });

        thread2.start();
    }

}
时间: 2024-10-13 07:27:17

多线程1------------创建线程的两种方法的相关文章

(转)java创建线程的两种方法比较

Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法:  ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法. 为什么Java要提供两种方法来创建线程呢?它们都有哪些区别?相比而言,哪一种方法更好呢? 在Java中,类仅支持单继承

Java 创建线程的两种方法

Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法: ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法. 为什么Java要提供两种方法来创建线程呢?它们都有哪些区别?相比而言,哪一种方法更好呢? 在Java中,类仅支持单继承,

Java创建线程的两种方法

大多数情况,通过实例化一个Thread对象来创建一个线程.Java定义了两种方式: 实现Runnable 接口: 可以继承Thread类. 下面的两小节依次介绍了每一种方式. 实现Runnable接口 创建线程的最简单的方法就是创建一个实现Runnable 接口的类.Runnable抽象了一个执行代码单元.你可以通过实现Runnable接口的方法创建每一个对象的线程.为实现Runnable 接口,一个类仅需实现一个run()的简单方法,该方法声明如下:    public void run( )

创建线程的两种方法

第一种:继承Thread类 子类覆写父类的run方法,将线程代码写在run()中. 建立子类对象,些时线程也被创建了. 通过start方法启动线程. 第二种:实现Runnable接口 子类覆盖接口的run方法,将线程代码写在run()中. 通过Thread类创建线程,并将实现Runnable接口的子类对象作为参数传递给Thread类的构造函数. Thread对象调用start方法启动线程. 两者的比较: 继承Thread类,相对简单,但因为单继承的局限性,同份资源不共享,而不建议使用:而实现Ru

43.创建线程的两种方法

public class Test { public static void main(String[] args) { MyThread mt = new MyThread(); // 实例化线程对象 mt.start();// 启动线程 } } // 通过继承Thread类来创建线程 class MyThread extends Thread { private int count = 0; public void run() { while (count < 100) { count++;

创建线程的两种方法,继承Thread,继承Runnable

继承Thread 1 package thread; 2 //继承Thread 3 public class TestThread { 4 public static void main(String[] args) { 5 //run()方法由CPU调用:分线程 6 MyThread thread=new MyThread(); 7 thread.start(); 8 //主线程 9 String name=Thread.currentThread().getName();//得到所在线程的名

【 Thread】创建线程的2种方法

(一)Thread类 1.结构 java.lang.Object |---java.lang.Thread 2.创建线程的两种方法 (1)一种方法是将类声明为Thread的子类,该子类应重写Thread类的run方法 class PrimeThread extends Thread {          long minPrime;          PrimeThread(long minPrime) {              this.minPrime = minPrime;      

创建线程的两种方式比较Thread VS Runnable

1.首先来说说创建线程的两种方式 一种方式是继承Thread类,并重写run()方法 1 public class MyThread extends Thread{ 2 @Override 3 public void run() { 4 // TODO Auto-generated method stub 5 6 } 7 } 8 //线程使用 9 MyThread mt = new MyThread(); //创建线程 10 mt.start(); //启动线程 另外一种方式是实现Runnabl

黑马程序员——创建线程的两种方式

java中创建线程有两种方式: 1.继承Thread类 步骤: (1)定义一个类继承Thread类 (2)复写Thread类中的run()方法 (3)调用start()方法:启动线程及调用run()方法 2.实现Runnable接口的方式 步骤:(1)定义一个类实现Runnable接口 (2)覆盖Runnable接口中的run()方法,将线程要运行的代码放到该run方法中 (3)通过Thread类建立线程对象 (4)将实现Runable接口的类对象作为实际参数传递给Thread的构造函数. (5