Java 多线程状态操作最佳实践

本文介绍了Java多线程的概念,包括进程、线程和多线程的区别,详细讲解了创建线程的两种方式、线程相关方法如Sleep、yield和join,以及如何处理线程安全问题。推荐在实际开发中实现Runnable接口,并通过示例展示了线程安全问题及其解决方案——加锁。最后,概述了线程的六种状态。
摘要由CSDN通过智能技术生成

Java 中的多线程实现较为简单,这篇文章主要讲解多线程操作中状态操作相关的代码示例,希望可以帮助你提高对多线程的理解。

要学习多线程首先要了解进程和线程还有多线程的区别是什么​

进程

在开启一个软件后,操作系统会分配给软件一个进程,进程即该软件所在的内存区域,是软件运行时状态的一个抽象,是一个整体,进程中必须包含线程,不可独立存在。

线程

线程的宿主是进程,一个进程代表一个软件,线程为一个进程中正在并行执行的一些功能,打个比方,QQ 有接收消息的功能还有上线提醒的功能,它们同时进行,互不干扰。

多线程

在多核 CPU 中,通过软件或者硬件来实现多个核心协同工作,达到充分使用 CPU 的目的。在单核CPU时,操作系统会进行伪多线程处理,即每个线程随机短暂运行并快速切换,实现多任务处理。

创建线程的两种方式

继承 Thread 对象

class DemoTask extends Thread {
   
    public static List<String> list = new ArrayList<>();

    @Override
    public void run() {
   
        System.out.println("hello Thread");
    }
}

实现 Runnable 接口

class DemoTask implements Runnable {
   
    public static List<String> list = new ArrayList<>();

    @Override
    public void run() {
   
        System.out.println("hello Runnable");
    }
}

实际开发中,推荐实现 Runnable 接口,因为 Java 是支持多实现的但是仅仅支持单继承,如果继承了 Thread 对象,那就不能继承其他对象了。

线程中的相关方法

Sleep - 休眠

使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性。

public class TestRunnable {
   
    public static void main(String[] args){
   
        NewRunnable runnable = new NewRunnable();
        //分别创建两个线程,并传入runnable参数
        Thread thread1 = new Thread(runnable);
        Thread thread2 = new Thread(runnable);
        //运行线程
        thread1.start();
        thread2.start();
        System.out.println("End....");
    }
}
class NewRunnable implements Runnable{
   

    @Override
    public void run() {
   
        for (int i = 0; i < 100; i++) {
   
            System.out.println(Thread.currentThread().getName()+":"+i);
            try <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值