Java:多线程

本文详细介绍了在Java中通过继承Thread类和实现Runnable接口创建线程的方法,包括步骤、示例代码以及线程的构造器、常用方法(如start、run、getName等)、过时方法(如stop和suspend)和优先级管理。
摘要由CSDN通过智能技术生成

线程的概述

1 创建线程的方式一:继承Thread类

步骤:

  1. 创建一个继承Thread 类的子类;
  2. 重写Thread类run()----》将此线程要执行的操作,声明在此方法中;
  3. 创建当前Thread的子类的对象;
  4. 通过对象调用start():1 启动线程,2调用当前线程的run()
// 创建一个继承Thread 类的子类;
public class PritNumer extends Thread{
	//重写Thread类run()----》将此线程要执行的操作,声明在此方法中;
    @Override
    public void run(){
        for (int i = 0; i < 10; i++) {
            if (i % 2 == 0) {
                System.out.println("Prit");
            } else {
                System.out.println(i);
            }
        }
    }
}
public class PritMain {
    public static void main(String[] args) {
     //创建当前Thread的子类的对象;
        PritNumer pritNumer = new PritNumer();
        // 通过对象调用start():1 启动线程,2调用当前线程的run()
        pritNumer.start();
    }
}

2 创建线程的方式二:实现Runnable接口

步骤:

  1. 创建一个实现Runnable接口的类;
  2. 实现接口中的run()–》将此线程要执行的操作声明在此方法中;
  3. 创建当前实现类的对象;
  4. 将此对象作为参数传递到Thread来的构造器中,创建Thread类的实例;
  5. Thread类的实例调用start():1启动线程,2调用当前线run();
public class EvenNumberPrint implements Runnable{
    @Override
    public void run(){
        for(int i =1;i<=100; i++){
            System.out.println(Thread.currentThread().getName() + ":" + i);
        }
    }
}

public class EvenNumberTest {
    public static void main(String[] args) {
        EvenNumberPrint p = new EvenNumberPrint();
        Thread t1 = new Thread(p);
        t1.start();
    }
}

线程的常用结果

线程中的构造器

-public Thread(): 分配一个新的线程对象
-public Thread(String name): 分配一个指定名字的新线程
-public Thread(Runnable target): 指定创建线程的目标对象,实现了Runnable接口中的run方法;
-public Thread(Runnable target,string name):分配一个带指定目标新的线程对象并指定名字。

线程中的常用方法

start() 启动线程,调用线程的run()
run() 将线程要执行的操作声明在run()中
currentThread() 获取当前执行代码对应的线程;
getName() 获取线程名称
setName()设置线程名称
sleep(long millis):静态方法,调用时,可以指定当前线程睡眠的毫秒数;
yield()静态方法,一旦执行此方法,就释放CPU的执行权,
join()在线程a中通过线程b调用join(),意味着线程A进入阻塞状态,知道线程b执行结束,线程a才结束阻塞状态,继续执行;
isAlive() 判断当前线程时否存活

过时方法

stop()强行结束一个线程的执行,直接进入死亡状态,不建议使用
void suspend()/void resume():可能造成死锁,所以也不建议使用

编程的优先级
getPriority() 获取线程的优先级
setPriority() 设置线程的优先级 范围【1-10】
Thread内部声明的三个常量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值