Java基础——多线程

本文介绍了Java中的多线程概念,包括进程与线程的区别,以及多线程的创建方式——继承Thread类和实现Runnable接口。通过售票系统的例子展示了两种方式的执行效果和优缺点。此外,还探讨了线程安全问题,以卖票为例,说明了同步操作的重要性,并给出了解决线程安全的同步代码块实现。
摘要由CSDN通过智能技术生成

进程与线程


        进程就是程序的一次执行,而线程可以理解为进程中的执行的一段程序片段。每个进程都有独立的代码和数据空间(进程上下文);而线程可以看成是轻量级的进程。一般来讲(不使用特殊技术),同一进程所产生的线程共享同一块内存空间。
       同一进程中的两段代码是不可能同时执行的,除非引入线程(实际也非同时执行,但表面上有同时执行的效果)。
       多线程情况下,多个线程都获取CPU的执行权,CPU执行谁,就执行谁,在某个时间点,只有一个程序在运行(多核除外)CPU在做着快速的切换,已达到看上去是同事运行的效果。

进程:是一个正在运行的程序,每一个进程都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元;
线程:就是进程中执行的一个控制单元,线程控制着进程的执行。

一个进程至少有一个线程,JVM 启动的时候会有一个进程java.exe。该进程中至少一个线程负责java程序的执行,而且这个线程运行的代码在在main方法中,该线程为主线程。

 

多线程创建


创建多线程,一般有两种方式,通过java.lang.Thread类或者通过Runnable接口。

继承Thread类
 1、继承Thread类,并重新Thread类中的run方法
 2、创建并启动一个线程,调用start方法(启动线程、调用run方法)

 

public class MyThread extends Thread{

 @Override
 public void run() {
  super.run();
  for (int i = 0; i < 5; i++) {
            System.out.println("线程:"+currentThread().getName()+" 执行  "+ i);
        }
 }
 /**
  * @param args
  */
 public static void main(String[] args) {
  MyThread mt = new MyThread();
  mt.start();  //开启线程。并执行该线程的run方法
  //mt.run();  //仅仅对象调用放到,而创建线程了,并没有运行
 }
}


为什么要覆盖run方法ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值