精华内容
下载资源
问答
  • 要产生一个线程有两种方法:◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法;◆实现Runnalbe接口,重载Runnalbe接口中的run()方法。种方法更好:在Java中,类仅支持单继承,也就是说,当定义...

    要产生一个线程,有两种方法:

    ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法; ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法。

    哪种方法更好:

    在Java中,类仅支持单继承,也就是说,当定义一个新的类的时候,它只能扩展一个外部类.这样,如果创建自定义线程类的时候是通过扩展 Thread类的方法来实现的,那么这个自定义类就不能再去扩展其他的类,也就无法实现更加复杂的功能。如果自定义类必须扩展其他的类,那么就可以使用实现Runnable接口的方法来定义该类为线程类,这样就可以避免Java单继承所带来的局限性。

    还有一点最重要的就是使用实现Runnable接口的方式创建的线程可以处理同一资源,从而实现资源的共享。

    而利用扩展Thread类创建的多个线程,虽然执行的是相同的代码,但彼此相互独立,且各自拥有自己的资源,互不干扰。

    所以,如果现实的情况要求保证新建线程彼此相互独立,各自拥有资源,且互不干扰,采用哪个方式来创建多线程都是可以的。

    而如果现实问题中要求必须创建多个线程来执行同一任务,而且这多个线程之间还将共享同一个资源,那么就可以使用实现Runnable接口的方式来创建多线程程序。而这一功能通过扩展Thread类是无法实现的。

    实现Runnable接口相对于扩展Thread类来说,具有无可比拟的优势。这种方式不仅有利于程序的健壮性,使代码能够被多个线程共享,而且代码和数据资源相对独立,从而特别适合多个具有相同代码的线程去处理同一资源的情况。这样一来,线程、代码和数据资源三者有效分离,很好地体现了面向对象程序设计的思想。

    展开全文
  • 1.、创建线程有哪两种方式? 两种方式: 继承Thread类 实现Runnable接口 2.如何通过继承Thread类来创建线程? 步骤: (1). 定义一个类,继承自Thread类,重写run()方法 (2). 创建该类的实例,即创建一个线程 (3)....

    2.创建线程方式一_继承Thread类:创建线程有哪四种方式???如何通过继承Thread类来创建线程???Thread常用方法有哪四个???

    学习:第7遍


    1.、创建线程有哪四种方式???

    方式一:继承Thread类
    方式二:实现Runnable接口
    方式三:实现Callable接口
    方式四:使用Executors工具类创建线程池


    2.如何通过继承Thread类来创建线程???

    步骤:
    (1). 定义一个类,继承自Thread类,重写run()方法
    (2). 创建该类的实例,即创建一个线程
    (3).调用start()方法,启动线程(不能直接调用run()方法)


    3.Thread常用方法有哪四个???

    方法一:thread1 .setName(“线程1”)
    作用:给线程设置名字

    方法二: thread1.start()
    作用: 启动线程,并直接调用run()方法

    方法三: Thread.currentThread()
    作用:获取当前的线程对象

    方法四: thread .getName()
    作用:调用getName()获取线程名


    
    /*
     * JVM启动时会创建一个主线程,用来执行main方法
     * 要想实现多线程,需要在主线程中创建新的线程
     * 
     * 实际上,Java程序在运行时至少会启动两个线程:main线程、垃圾回收线程gc
     */
    public class TestThread {
    	public static void main(String[] args) {
    
    		// 创建线程
    		MyThread thread1 = new MyThread(); //自定义线程的默认名称:Thread-编号,编号从0开始
    	   /**
    		 * 方法:thread1 .setName("线程1")
    		 * 作用:给线程设置名字
    		 */
    		thread1 .setName("线程1");
    		/**
    		 * 方法:	thread1.start()
    		 * 作用:   启动线程,并直接调用run()方法
    		 */
    		
    		thread1.start(); // 线程并不一定立即执行,要获取到CPU时间片才会执行
    		
    		MyThread thread2 = new MyThread("线程2");
    		thread2.start();
    
           /**
    		 * 方法: Thread.currentThread()
    		 * 作用:获取当前的线程对象
    		 */
    		Thread thread = Thread.currentThread(); 
    		t.setName("主线程");
    		for (int i = 1; i <= 10000; i++) {
    			System.out.println(thread .getName()+"------------" + i); //主线程的默认名称就是main
    		}
    	}
    }
    
    class MyThread extends Thread {
    	
    	public MyThread(){
    		
    	}
    	
    	public MyThread(String name){
    		super(name); //调用父类的构造方法,指定线程名
    	}
    
    	// 在run()方法中编写线程要执行的代码
    	@Override
    	public void run() {
    		for (int i = 1; i <= 10000; i++) {
    			System.out.println(getName()+"------------" + i); // 调用getName()获取线程名
    		}
    	}
    }
    
    
    展开全文
  • 要产生一个线程有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法;◆实现Runnalbe接口,重载Runnalbe接口中的run()方法。 种方法更好: 在Java中,类仅支持单继承,也就是说,...

    要产生一个线程,有两种方法:

    ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法; 
    ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法。

    哪种方法更好:

    在Java中,类仅支持单继承,也就是说,当定义一个新的类的时候,它只能扩展一个外部类.这样,如果创建自定义线程类的时候是通过扩展 Thread类的方法来实现的,那么这个自定义类就不能再去扩展其他的类,也就无法实现更加复杂的功能。如果自定义类必须扩展其他的类,那么就可以使用实现Runnable接口的方法来定义该类为线程类,这样就可以避免Java单继承所带来的局限性。

    还有一点最重要的就是使用实现Runnable接口的方式创建的线程可以处理同一资源,从而实现资源的共享。

    而利用扩展Thread类创建的多个线程,虽然执行的是相同的代码,但彼此相互独立,且各自拥有自己的资源,互不干扰。

    所以,如果现实的情况要求保证新建线程彼此相互独立,各自拥有资源,且互不干扰,采用哪个方式来创建多线程都是可以的。

    而如果现实问题中要求必须创建多个线程来执行同一任务,而且这多个线程之间还将共享同一个资源,那么就可以使用实现Runnable接口的方式来创建多线程程序。而这一功能通过扩展Thread类是无法实现的。

    实现Runnable接口相对于扩展Thread类来说,具有无可比拟的优势。这种方式不仅有利于程序的健壮性,使代码能够被多个线程共享,而且代码和数据资源相对独立,从而特别适合多个具有相同代码的线程去处理同一资源的情况。这样一来,线程、代码和数据资源三者有效分离,很好地体现了面向对象程序设计的思想。

    转载于:https://www.cnblogs.com/one-apple-pie/p/10428267.html

    展开全文
  •  为什么Java要提供两种方法创建线程呢?它们都哪些区别?相比而言,一种方法更好呢?  在Java中,类仅支持单继承,也是说,当定义一个新的类的时候,它只能扩展一个外部类.这样,如果创建自定义线程
  • C++利用API接口createthread创建线程和利用库thread创建线程有什么具体的区别,希望具体点(什么时候用哪种)。
  • 创建线程有两种方法,一种是继承Thread类创建线程类,而另外一种是实现Runnable接口创建线程类。那么这两种方法本质上有什么区别呢?我们平时更倾向于种呢?下面我们就来讨论下着两种方法的优势与劣势; 1).继承...
    创建线程有两种方法,一种是继承Thread类创建线程类,而另外一种是实现Runnable接口创建线程类。那么这两种方法本质上有什么区别呢?我们平时更倾向于哪种呢?下面我们就来讨论下着两种方法的优势与劣势;

    1).继承Thread类创建线程类  实现Runnable接口创建线程类

    public class Thread1 extends Thread{
    	@Override
    	public void run() {
    		while(true){
    			System.out.println("1" + Thread1.currentThread().getName());
    			try {
    				Thread.sleep(1000);
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    			
    		}
    	}
    
    	public static void main(String[] args) {
    		Thread1 th = new Thread1();
    		th.start();
    
    	}
    }

    2).实现Runnable接口创建线程类

    public class Thread2 implements Runnable {
    	@Override
    	public void run() {
    		while (true) {
    			System.out.println("线程"+ Thread.currentThread().getName());
    			try {
    				Thread.sleep(1000);
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    			
    
    		}
    
    	}
    
    	public static void main(String[] args) {
    		Thread2 th2 = new Thread2();
    		Thread th1 = new Thread(th2);
    		th1.start();
    		
    
    	}
    
    }

    那么这两种方法有什么区别呢?

    先来说说第一种吧:

    采用继承Thead类实现多线程:

    优势:编写简单,如果需要访问当前线程,只需使用this即可,无需使用Thead.currentThread()方法。

    劣势:因为这种线程类已经继承了Thead类,所以不能再继承其它类。

    第二种方法:

    采用实现Runable接口的多线程:

    优势:线程类只是实现了Runable接口,因此还可以继承其他类;

             在这种情况下,可以使多个线程共享一个target对象,所以非常适合多个线程用来处理同一份资源的情况,从而可以将cpu、代码和数据分开,形成清晰的模型,较好的体现面向对象思想。

    劣势:编程略有些复杂,如果要访问当前线程必须使用Thread.currentThread方法。











    展开全文
  •    在看很多的关于java创建新线程的博客中,发现有的说创建新的线程有两种方式,有的说是三种方式。但是到底是一种是正确的呢 ? 两种创建方式: 一种是将类声明为Thread的子类,该类应重写Thread类的run方法,...
  • 线程创建有两种方式,昨天学习过其中的一种:创建一个类,继承自Java里的Thread类,并重写run方法。最后再创建自定义线程的对象,并调用start方法,这样就启动一个线程了。那么Thread到底是个什么东西呢?一、...
  • 线程创建有两种方式 : 创建一个类,继承自Java里的Thread类,并重写run方法。 最后再创建自定义线程的对象,并调用start方法,这样就启动一个线程了。 那么Thread到底是个什么东西呢? 一、Thread类 在Java...
  • 抛开线程池不说,创建线程有两种方式 创建线程的第一种方式: 创建一个类继承Thread 重写Thread中的run方法 (创建线程是为了执行任务任务代码必须有存储位置,run方法就是任务代码的存储位置。) 创建子类对象...
  • 两种方式创建线程

    2017-04-10 18:01:03
    为什么Java要提供两种方法创建线程呢?它们都哪些区别?相比而言,一种方法更好呢?1. 在Java中,类仅支持单继承,也就是说,当定义一个新的类的时候,它只能扩展一个外部类.这样,如果创建自定义线程类的时候...
  • 线程创建有两种方式,昨天学习过其中的一种: 创建一个类,继承自Java里的Thread类,并重写run方法。最后再创建自定义线程的对象,并调用start方法,这样就启动一个线程了。那么Thread到底是个什么东西呢?一、...
  • 文章目录创建线程的方式到底几种???使用Runnable接口创建线程继承Thread类创建线程创建线程种方式更好?两种方式本质的对比1. Runnable:最终调用的是target(也就是Runnable接口的实现类)的run方法。2. ...
  • 一、区别Java中启动线程有两种方法,继承Thread类和实现Runnable接口,由于Java无法实现多重继承,所以一般通过实现Runnable接口来创建线程。但是无论种方法都可以通过start()和run()方法来启动线程,下面就来介绍...
  • 一、区别Java中启动线程有两种方法,继承Thread类和实现Runnable接口,由于Java无法实现多重继承,所以一般通过实现Runnable接口来创建线程。但是无论种方法都可以通过start()和run()方法来启动线程,下面就来介绍...
  • 一、区别Java中启动线程有两种方法,继承Thread类和实现Runnable接口,由于Java无法实现多重继承,所以一般通过实现Runnable接口来创建线程。但是无论种方法都可以通过start()和run()方法来启动线程,下面就来介绍...
  • 在Python中可使用的多线程模块主要有两个,thread和threading模块。thread模块提供了基本的线程和锁的支持,建议新手不要使用。threading模块允许创建和管理线程,提供了更多的同步原语。 thread模块函数: start_...
  • Java创建线程方法有两种:1.继承Thread类,并重写run()方法2.实现Runnable接口,并实现run()方法。不管是一种,都要用到run()方法,该方法时线程的执行主体。启动线程的方法:调用线程类的start()方法启动线程...
  • 进程和线程 ...设想这样一种情况,将文件A从C盘移动到D盘,将文件B从E盘移动到F盘,现在有两种解决方案(单核CPU): 先移动A,完成后再移动B 同时移动A和B 那么,种方式更快呢? 是方案一,因为同时移动
  • Java线程创建

    2012-10-19 17:08:36
    实际上Runnable接口只有一个run方法,Thread也是实现了Runnable接口的,但是无论种方式都必须借助Thread类,下面列举了创建线程两种方式: -&gt;方式一:继承Thread类 public class ChildThread extends ...
  • Java中启动线程start和run方法

    千次阅读 2018-07-21 21:31:44
    Java中启动线程有两种方法,继承Thread类和实现Runnable接口,由于Java无法实现多重继承,所以一般通过实现Runnable接口来创建线程。但是无论种方法都可以通过start()和run()方法来启动线程,下面就来介绍一下他们...
  • 获得线程方法有哪? (1)继承thread类(2)runnable接口 如果只回答这个你连被问到juc的机会都没有,一般new Thread()中可以传入一个实现了Runnable的类 创建新类MyThread实现runnable接口 class MyThread ...
  • Java中启动线程有两种方式,继承Thread类以及实现接口Runnable,由于Java无法实现多重继承,故经常通过实现接口Runnable来创建线程。但是无论种方式创建都可以通过start()和run( )方法来启动线程,下面就来介绍...
  • JAVA线程学习

    2017-05-09 15:33:31
    有两种方法创建线程,一是直接继承Thread,另一种是实现Runnable接口。对比这两种方法,更推荐使用实现Runnable接口方法。无论使用种方法,都需要重写run方法,然后将它new出来。如果是继承Thread方法创建的线程,...
  • 启动线程的正确姿势

    2020-02-14 16:54:33
    启动线程的正确姿势 通过之前的分析,我们知道有两种定义线程执行逻辑的方法,而创建线程只有一种方法,也就是new一个Thread类的实例。 JAVA实现多线程到底多少种方法哪种方法更好呢? ...
  • 我们有两种常见的创建线程方法,一种是继承Thread类,一种是实现Runnable的接口,Thread类其实也是实现了Runnable接口。但是我们创建这两种线程在运行结束后都会被虚拟机销毁,如果线程数量多的话,频繁的创建和...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 151
精华内容 60
关键字:

创建线程有哪两种方法