多线程

一、进程与线程
进程:
是内存中运行的应用程序,有独立的空间,系统运行程序的基本的单位,可以有多个进程
例如:打开微信、支付宝

线程:
是进程中的执行单元,可以有多个线程
例如:打开电脑管家中的各项功能

二、创建线程类
1、使用Thread关键字
Java.long.Thread
使用步骤:
创建子类来继承 Thread ,覆盖重写 run 方法,创建子类对象并调用 start 方法

//创建Thread子类
public class Tread00 extends Thread {
    //覆盖重写run方法
    @Override
    public void run(){
        for (int i = 0; i <10 ; i++) {
            System.out.println("run:"+i);
        }
    }
public static void main(String[] args) {

    //创建Thread的子类对象,调用start方法
    Tread00 th = new Tread00();
    th.start();

    //这里是一个主方法的线程
    //也会被执行

    for (int i = 0; i <10 ; i++) {
        System.out.println("main;"+i);
    }
}

2、接口Runnable
java.long.Runnable;
使用步骤:

创建子类实现接口 Runnable,覆盖重写 run 方法,创建接口实现类对象,创建Tread的对象并传递实现类对象,调用start方法。

//创建的线程实现一个Runnable类
public class TreadGreat implements Runnable{
//重写run方法
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println(Thread.currentThread().getName()+";"+i);
        }
    }
public static void main(String[] args) {
    //创建接口实现类对象
    TreadGreat treadGreat = new TreadGreat();

    //创建Tread类对象,传递实现类对象
    Thread th = new Thread(treadGreat);
    th.start();
    
	//主线程
    for (int i = 0; i < 5; i++) {
        System.out.println(Thread.currentThread().getName() + ";" + i);
    }
}

三、Thread的常用方法
String getName()
static Thread currentThread()
public static void sleep(long millis)

public class getTreadName extends Thread {
    @Override
    public void run(){

     //   String name = getName();
       // System.out.println(name);

/*
        Thread name2  =Thread.currentThread();
        System.out.println(name2);//Thread[Thread-0,5,main]

        String str = name2.getName();
        System.out.println(str);
        */
        //还可以使用
        System.out.println(Thread.currentThread().getName());
    }
public static void main(String[] args) {

    getTreadName name1 = new getTreadName();

   name1.start();//Thread-0
    new getTreadName().start();//Thread-1
    new getTreadName().start();//Thread-2

    /*
    使用currentTread打印结果
    Thread[Thread-2,5,main]
    Thread[Thread-1,5,main]
    Thread[Thread-0,5,main]
     */
 System.out.println(Thread.currentThread().getName());
}
public class TreadSleep {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            try {
            //线程延时
                Thread.sleep(500);//单位是毫秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(i);//瞬间就能打印出结果
        }
    }
    //InterruptedException:中断故障异常,一般发生在线程中

四、线程的匿名对象
格式:
new 父类/接口(){
重复父类/接口中的方法
};

public static void main(String[] args) {
    //使用Thread匿名
    //new一个父类(Thread)
    new Thread(){
        //重写run方法
        @Override
        public void run(){
            for (int i = 0; i < 5; i++) {
                System.out.println(Thread.currentThread().getName()+">>>>"+i);
            }
        }
    }.start();


    //使用Runnable匿名
    Runnable ru = new Runnable(){
        @Override
        public void run(){
            for (int i = 0; i < 5; i++) {
                System.out.println(Thread.currentThread().getName()+">>>>"+"手机");
            }
        }
    };
    new Thread(ru).start();


    //使用Runnable匿名
    new Thread(new Runnable(){
        @Override
        public void run(){
            for (int i = 0; i < 5; i++) {
                System.out.println(Thread.currentThread().getName()+">>>>"+"电脑");
            }
        }
    }).start();//注意Thread的括号
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值