Thread -线程的两种创建方式

package cn.learn.thread.Thread;
/*
    实现Runnable必须重写run()方法,一般推荐用Runnable实现

 */
public class RunnableImpl implements Runnable {

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"执行");
    }
}
package cn.learn.thread.Thread;
/*
     继承Thread类,实现多线程
     实现步骤:
        1.创建一个Thread类的子类
        2.在Thread的子类中重写Thread类中的run方法设置线程任务
        3.创建Thread的子类对象
        4.调用Thread类中的start方法,开启新的线程,执行run方法
        结果是两个进程并发地运行,当前线程(main线程)和另外一个线程(执行其run方法)
        多次启动一个线程是非法的,特别线程结束后,不能重新启动
     java属于抢占式执行,哪个线程级别高就优先执行;同一个优先级随机选择

 */
public class ThreadExtends extends Thread {

    public ThreadExtends() {
    }

    //使用父类来创建新线程名称
    public ThreadExtends(String name) {
        super(name);
    }

    //重新run方法
    @Override
    public void run() {
        //获取线程名称
        //String name = this.getName();
        //System.out.println("线程名称:"+name);

        //获取当前线程名称
        Thread thr = Thread.currentThread();
        System.out.println(thr);

        //链式编程
        //System.out.println(Thread.currentThread().getName());
    }
}
 1 package cn.learn.thread.Thread;
 2 /*
 3     JVM执行main方法,找OS开辟一条main方法通向cpu的路径
 4     这个路径叫main线程-主线程
 5     cpu通过该线程,路径就可以执行main方法
 6
 7     Thread继承与Runnable接口实现的区别
 8     实现Runnable接口创建多线程的好处:
 9       1.避免了单继承的局限性
10       2.增强了程序的扩展性,降低了耦合性(解耦),eg:多个Runnable的实现类可以有不同的线程任务
11       3.多个Thread对象,共用一个Runnable实现类对象的资源
12  */
13
14 public class MyThread {
15     public static void main(String[] args) throws InterruptedException {
16         //创建Thread类的子类对象,如ThreadExtends有构造方法可在其类用super(name)父类来创建线程名称
17         ThreadExtends anThread = new ThreadExtends();
18
19         //可以用anThread.setName();来设置线程名称
20
21         //开辟新线程,用于执行run方法,如果直接使用run方法,还是单线程,由main方法来执行
22         anThread.start(); //开辟新的栈空间,新线程,ThreadExtends类中run方法运行,获取线程名称Thread-0
23
24         //再创建一个新线程,运行run(),获取线程名称Thread-1
25         new ThreadExtends().start();  //Thread[Thread-1,5,main]
26
27         //获取当前线程名称
28         System.out.println(Thread.currentThread().getName());  //main
29
30         //与上面的线程并发执行,不安全,抢占cpu,cpu有选择的权利,随机执行
31         for (int i = 0; i <10 ; i++) {
32             System.out.println("main"+i);
33         }
34
35
36         //Thread的sleep暂时以指定毫秒数停止执行线程,结束后继续执行
37         //模拟秒表
38         for (int i = 0; i <60 ; i++) {
39             Thread.currentThread().sleep(1000);
40             System.out.println(i);
41
42         }
43
44
45         //创建线程的第二种方法
46         /*
47         创建线程的另一种方法是声明实现 Runnable 接口的类。
48         该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。
49
50         需要用Thread来接受其对象,调用start,运行run开启新线程
51         */
52         //1
53         RunnableImpl runnableThread = new RunnableImpl();
54         //2,多个Thread共用一个runnableThread资源
55         Thread t=new Thread(runnableThread);
56         Thread t1=new Thread(runnableThread);
57         //3
58         t.start();  //新线程开启
59         t1.start();  //新线程开启
60
61     }
62 }

原文地址:https://www.cnblogs.com/huxiaobai/p/11519673.html

时间: 2024-10-07 05:31:47

Thread -线程的两种创建方式的相关文章

Java---11---多线程的两种创建方式

多线程的两种创建方式: 下面这些东西是API文档中的: public class Thread extends Object implements Runnable 线程 是程序中的执行线程.Java 虚拟机允许应用程序并发地运行多个执行线程. 每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程.每个线程都可以或不可以标记为一个守护程序.当某个线程中运行的代码创建一个新 Thread 对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护

线程概述以及线程的两种创建方式

package countThread; public class CountThread extends Thread{ private String name; public CountThread(String name) { super(name); } /** * 线程的执行体 * * 创建新执行线程有两种方法,一种方法是将类声明为Thread的子类,该子类应该重写Thread类中的run方法 * 接下来可以分配并且启动该子类的实例 */ @Override public void r

java多线程总结一:线程的两种创建方式及优劣比较

1.通过实现Runnable接口线程创建 (1).定义一个类实现Runnable接口,重写接口中的run()方法.在run()方法中加入具体的任务代码或处理逻辑. (2).创建Runnable接口实现类的对象. (3).创建一个Thread类的对象,需要封装前面Runnable接口实现类的对象.(接口可以实现多继承) (4).调用Thread对象的start()方法,启动线程 示例代码: [java] view plaincopy <span style="font-size:16px;&

java多线程总结一:线程的两种创建方式及比较

1.线程的概念:线程(thread)是指一个任务从头至尾的执行流,线程提供一个运行任务的机制,对于java而言,一个程序中可以并发的执行多个线程,这些线程可以在多处理器系统上同时运行.当程序作为一个应用程序运行时,java解释器为main()方法启动一个线程. 2.并行与并发: (1)并发:在单处理器系统中,多个线程共享CPU时间,而操作系统负责调度及分配资源给它们. (2)并行:在多处理器系统中,多个处理器可以同时运行多个线程,这些线程在同一时间可以同时运行,而不同于并发,只能多个线程共享CP

java中线程的两种创建方式

第一种:继承java.lang.Thread类.然后重写run方法 例如我们模拟一个龟兔赛跑 1 package edu.aeon.thread; 2 3 /** 4 * 说明:模拟龟兔赛跑 5 * 6 * @author lzj 7 * 8 */ 9 public class RabbitThread extends Thread { 10 @Override 11 public void run() { 12 for (int i = 1; i <= 100; i++) { 13 Syste

线程的两种实现方式

线程有两种实现方式 一,Thread类 public class Thread implements Runnable{ } 二,Runnable接口 public interface Runnable{ public abstract void run(); } 区别:Thread是一个类,他继承了runnable接口,而runnable是一个接口, 一个类只能有一个父类,但是可以有多个接口,所以在拓展型方面,ruannale有更好的拓展性,更加灵活 Runnable还可以用于资源共享 1.

String变量的两种创建方式

在java中,有两种创建String类型变量的方式: String str01="abc";//第一种方式 String str02=new String("abc")://第二种方式 第一种方式创建String变量时,首先查找JVM方法区的字符串常量池是否存在存放"abc"的地址,如果存在,则将该变量指向这个地址,不存在,则在方法区创建一个存放字面值"abc"的地址. 第二种方式创建String变量时,在堆中创建一个存放&q

JAVA并发编程学习笔记------线程的三种创建方式

创建线程一般有如下几个方式: 1. 通过继承Thread类来创建一个线程: /** * 步骤1:定义一个继承Thread类的子类 * 步骤2:构造子类的一个对象 * 步骤3:启动线程: * */ public class ThreadTest{ public static void main(String[] args) { //构造子类对象 SubThread subThread = new SubThread(); //启动线程 subThread.start(); } } //定义继承Th

Java基础之线程的两种实现方式

进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程!线程总是属于某个线程,进程中的线程共享进程的内存 注意:对Java来说,run()方法没有任何特别之处.像main()方法一样,它只是新线程知道调用的方法名称(和签名).因此,在Runnable上或者Thread上调用run方法是合法的.但并不启动新的线程,启动新的线程要调用start()方法 在Java中提供了两种方式实现线程:1.继承Thread类 package unit_fifteen; p