java中的多线程

进程和线程的区别

进程:进程就是正在运行中的程序(进程是驻留在内存中的),是系统执行资源分配和调动的独立单位。每个进程都有自己占用的独立存储空间和系统资源。

线程:线程就是进程中的单个顺序控制流。

单线程:一个进程中包含一个顺序控制流(一条执行路径)

单线程:一个进程中包含多个顺序控制流(多条执行路径)

多线程的实现方法

方法一:继承Thread类

1、创建一个MyThread类,继承Thread类

2、重写run()方法

3、在测试类中创建MyThread类的对象

4、启动线程

步骤1、2

package com.pj.thread.mythread;

/**
 * @author pj_hxj
 * @Description:
 */
public class MyThread extends Thread {

    public MyThread() {
    }

    @Override
    public void run() {
        for (int i = 0; i <50 ; i++) {
            System.out.println("i="+i);
        }
    }
}

步骤3、4

public class Demo1 {
    public static void main(String[] args) {
        //创建类对象
        MyThread myThread01 = new MyThread();
        MyThread myThread02 = new MyThread();
        MyThread myThread03 = new MyThread();
        //启动线程
        myThread01.start();
        myThread02.start();
        myThread03.start();
    }
}

运行结果:

可以看出三个线程在抢占CPU。在相互交替运行。每次运行的结果各不相同

方法二:实现Runnable接口

1、创建一个MyRunnable类,实现Runnable接口

2、重写run()方法

3、创建Thread类的对象,并把MyRunnable对象作为参数传入

4、启动线程

步骤1、2

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 50; i++) {
            System.out.println(Thread.currentThread().getName()+":"+i);
        }
    }
}

步骤3、4

public class Demo2 {
    public static void main(String[] args) {
        //创建myRunnable类的对象
        MyRunnable myRunnable = new MyRunnable();
        //创建Thread类的对象,并把MyRunnable对象作为参数传入
        Thread t01 = new Thread(myRunnable,"线程1");
        Thread t02 = new Thread(myRunnable,"线程2");
        Thread t03 = new Thread(myRunnable,"线程3");
        //启动线程
        t01.start();
        t02.start();
        t03.start();
    }
}

运行结果

方法三:实现Callable接口

 实现的方法与方法二相似

线程的生命周期

创建:创建线程对象(通过start方法进入到下一个状态)

就绪:有运行的资格但是没有运行权,需要抢占CPU的执行权

运行:有运行的资格并且没有运行权,但是有可能被其他的线程抢走运行权。或者遇到阻塞线程,等其执行完回到就绪状态,继续抢占CPU的执行权。

死亡:成为垃圾,等待被回收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值