Java的多线程问题

本文详细介绍了Java中的多线程概念,包括通过继承Thread类和实现Runnable接口两种创建方式,以及start()与run()的区别、线程安全问题,如卖票示例中出现的问题,并探讨了解决多线程安全的锁机制和死锁等高级话题。
摘要由CSDN通过智能技术生成

什么是多线程

线程是依赖于进程而存在的。
    A:进程    正在运行的应用程序
    B:线程    进程的执行路径,执行单元

多线程的创建方式

  • 通过继承Thread类
  • 通过实现Runnable接口

实现方式一代码如下

package com.wy.threadcreate1;
/*
 * 创建线程的第一种方式,继承Thread类
 */
public class MyThread extends Thread{
   
    //重写run方法,重写run方法中的代码之后
    //当启动了这个线程之后,这个线程就会执行run方法中的代码
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println(i);
        }
    }

}

测试类如下:

  package com.wy.threadcreate1;
public class ThreadTest {
    public static void main(String[] args) {
        MyThread mt = new MyThread();
        mt.start();
    }
}

实现方式2代码如下:

package com.wy.threadcreate2;

/*
 * 创建线程的第二种方式,实现Runable接口
 */
public class MyThread implements Runnable{
   

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

多线程方法介绍

  1. 启动线程的方法

    run()
    
  2. start()和run()的区别

    start():1.开启线程  2.执行run()方法里面的代码
        run():执行的是线程里面执行的代码,并不会开启线程
    
  3. 为什么要重写run()方法?

    因为每个线程需要执行的代码都是都是不一样的,
        我们需要将每个线程自己独立执行的代码写到run()方法中执行
    
  4. 线程可以多次启动么?
    不可以多次启动
package com.wy.start_run;

public class MyThread extends Thread{
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println(i);
        }
    }
}
//////////////////////////////////////////////////////
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值