java利用thread类创建线程显示字符串_java 多线程之利用Thread类创建线程(Day02)...

本文介绍了Java中实现多线程的两种方式,特别是通过继承Thread类创建线程的详细步骤。讲解了线程的概念,如并发、进程和线程,并阐述了线程的特点。在Thread类中,run()方法用于定义线程执行的任务,而start()方法启动线程。此外,还提到了Thread.sleep()方法用于线程休眠。示例代码展示了如何创建并启动线程。
摘要由CSDN通过智能技术生成

前言:在一个程序中,如果一次只完成一件事情,很容易实现,但现实生活中很多事情都是同时进行的,所以在java中为了模拟这种状态,引入了线程机制,简单的说,当程序同时完成很多事情时,就是所谓的多线程。

实现线程的两种方式:一是通过继承Thread类来创建线程,另一种方法就是通过实现runnable接口来创建线程

Runnable是最常用的用来实现线程的一个接口,是重点,但今天暂不做讲解,只是对基础的Thread类做个详解,Thread 是入门,需要掌握之后才能理解runnable 线程接口

Runnable 将另起博文,做详细讲解,稍后将发布Runnable创建线程的博文

一:多线程中几个相关的概念:

什么是并发?

一个软件同时有多个功能被同时执行,称之为并发;

什么是进程?

每一个独立执行的程序都称谓进程, 每个进程都可以同时包含多个线程。简单的说,进程就是一个独立执行的程序。

什么是线程:

程序中的每一个任务就是线程(通常每一个任务称为一个线程);

什么是多线程?

一个程序中同时执行多个任务,就叫做多线程,比如一个浏览器可以同时下载几张图片。这就是多线程

线程的特点

1.进程它是资源分配的最小单位,线程是最小的执行单位。

2.一个进程可以有多个线程,

3.线程共享进程资源

二:实现线程的两种方式

方法一:通过继承Thread类创建线程;

利用Thread类创建线程的第一种方法

Thred类是本身是一个线程类,创建Thread对象通常使用这两种构造方法

1.public Thread(){}

2.public Thread(String name){}这个字符串参数就是一个自定义的线程名,也就是我们给线程起了一个名字,这个名字在查找线程的时候才能用到,我们暂时不通过这种方法创建线程对象。

Thread类有两个非常重要的方法,

1) run()方法,它是线程运行时执行的方法,也就是说我们这个线程打算要做什么事情,就要把要执行的内容代码写到这个run()方法里面

2)start()方法,它是使线程开始执行的方法,虽然我们执行的代码是写在上面run()方法里面的,但是我们需要使用这个start()方法才能够实现线程的并发效果。

Thread类还提供了一个静态方法sleep(long milli),这个方法是让执行的线程开始休眠,参数类型是毫秒。

例如:Thread.sleep(1000);表示线程运行的时候休眠一秒钟,就是运行时停顿了一秒。

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

1)首先我们编写一个自定义的类,让他继承Thread类;

2)然后我们需要重写run方法,run()方法执行的代码就是我们这个线程要运行的代码;

3)在主方法(main)中创建线程类的对象,

4)通过我们创建的线程类的对象来调用start()方法启动线程。代码如下:

public class ThreadTest {

public static void main(String[] args) {

//创建线程对象,Threada是我自定义的子类;父类引用,指向子类对象。

Thread a=new Threada();

//要想我们的线程能够运行,则必须调用这个start()方法;

a.start();//如果不调用start()方法,线程永远不会启动,在主方法没有调用start()方法之前,Thread对象只是一个实例,不是                       //真正的线程

}

}

class Threada extends Thread{

@Override

//重写run()方法,我们线程要做什么事情,就把代码方法这个方法中来

public void run() {

for(int i=0;i<=100;i++) {

System.out.println(i);

try {

Thread.sleep(1000);//表示线程运行的时候停顿一秒

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

利用Thread 类创建线程的第二种方法

//利用Thread类创建线程的第二种方法

//因为Thread 类位于java.lang包中,因而程序的开头不用import导入任何包就可直接使用

// 使用public Thread(String ThreadName)构造方法创建线程

public class MyThread extends Thread {

public MyThread() {

}

// 重写Thread 类中的run 方法

@Override

public void run() {

for(int i=0;i<=20;i++) {

System.out.println(i);

try {

//double值(1000*Math.random()

//sleep返回值类型为long,long整型数据,数据基本整型、短整型都输与整型数据

//但是Math.random返回一个浮点型数据,需要将其强制转换,转换成长整型、短整型或基本整型都可以

sleep((int)(1000*Math.random()));

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

public static void main(String []args) {

MyThread m=new MyThread();

m.start();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值