Java多线程

本文介绍了进程与线程的概念,详细讲解了多线程的两种实现方法:通过继承Thread类和实现Runnable接口,并探讨了这两种方法的特点及适用场景。

进程:正在运行的程序,一个应用程序在内存中的执行区域

线程:进程中的执行控制单元,一个进程中包含多个线程

单线程:效率低,安全

多线程:效率高,不安全

创建线程构造:
    1.new Thread();
    2.new Thread(Runnable r);

多线程实现方法一:
    一:继承Tread
    二:重写Tread中的run方法
    三:创建子类对象,将要执行的代码放在run方法中
    四:调用start方法
public class MyThread extends Thread { //继承Thtead类
    @Override
    //重写run方法
    public void run() {
        for (int i = 0; i < 50; i++) {
            System.out.println(getName()+i);
        }
    }
}
public class TestThread {
    public static void main(String[] args) {
        MyThread mt1 = new MyThread();//创建子线程对象
        MyThread mt2 = new MyThread();
        mt1.setName("线程一:");//设置线程名字
        mt2.setName("线程二:");
        mt1.start();//调用start方法开启线程
        mt2.start();
    }
}

多线程实现方法二:
    一:实现Runnable
    二:实现Runable中的方法
    三:创建Thread对象,创建Runnable实现对象
    四:将Runnable对象传入thread中
    五:调用Start方法
public class MyThread implements Runnable {

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

    }

}
public class TestThread {
    public static void main(String[] args) {
        MyThread mt = new MyThread();
        Thread t1 = new Thread(mt);
        t1.start();
        Thread t2 = new Thread(mt);
        t2.start();
    }
}

方式二好处:
    1.java只支持单继承,继承了Thread就无法继承其他的类,但java支持多实现,实现runnable接口的同时可以继承其他类
    提高了可扩展性。
    2.实现了runnable接口可以实现资源共享。
        原因:采用实现的runnable接口的方法创建线程,每次在创建线程是需要传入runnable的实现类的子类,不同的线程传入的
                    runnable的实现类的子类都是同一个,因此可以实现资源的共享

线程的状态:
        创建,运行,阻塞,睡眠,等待,结束
产生线程安全的原因:
        存在两个或两个以上的线程操作共享资源
解决线程安全方法:
        一:同步代码块:
                synchronized(锁对象){
                    同步的代码
                }
                锁对象为任意对象
        二:同步函数:
                public synchronized void 方法名(){
                    同步代码
                }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值