Java 小白多线程

博客介绍了线程相关知识。创建线程常用两种方式,即继承Thread类和实现Runnable接口。还介绍了线程的主要方法,如join()等。线程间通信可通过wait、notify等同步处理敏感数据,也可将操作共享数据的方法声明为synchronized。线程停止推荐用标记位,也可用interupt并结合api判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
通常比较常用的方式有两种
一、继承Thread类

public class KeyPersonThread extends Thread {
    public void run() {
        System.out.println(Thread.currentThread().getName() + "开始了战斗!");
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName() + "左突右杀,攻击随军!");
        }
        System.out.println(Thread.currentThread().getName() + "结束了战斗!");
    }
}

// 初始化
Thread mrCheng = new KeyPersonThread();
mrCheng.setName("程咬金");
mrCheng.start();

二、实现Runnable接口

public class ArmyRunnable implements Runnable {
    // volatile 保证了线程可以正确读取其他线程写入的值
    // 可见性
    volatile boolean keepRunning = true;
    public void run() {
        while (keepRunning) {
            for (int i = 0; i < 5; i++) {
                System.out.println(Thread.currentThread().getName() + "进攻对方["+i+"]");
                Thread.yield();
            }
        }
        System.out.println(Thread.currentThread().getName() + "结束战斗!");
    }
}

// 初始化
ArmyRunnable armyRunnableTask1 = new ArmyRunnable();
Thread thread1 = new Thread(armyRunnableTask1, "随军");

thread1.start();

主要的方法

  1. yield() 调用此方法的线程,释放当前CPU的执行权
  2. join() 在A线程中调用B线程的join()方法 表示 : 当执行到此方法,A线程停止执行 直至B线程执行完毕.A线程再接着join()之后的代码执行
  3. currentThread()静态的调取当前的线程
  4. setName() 设置此线程的名字
  5. getName() 获取当前线程名
  6. sleep() 休眠

三、线程间通信 同步

private final Object lock = new Object();

        synchronized (lock) {

            // 某种约束条件 导致线程等待
            try {
                lock.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            // 等待完毕 执行代码成功 通知其他线程 继续获取资源执行
            lock.notifyAll();
        }

通过wait notify notifyAll 进行线程的加锁阻塞,同步处理敏感数据操作。

还有一种方式将操作共享数据的方法声明为synchronized。即此方法为同步方法,能够保证当其中一个线程执行此方法时,其它线程在外等待直至此线程执行完此方法。

四、线程的停止

  1. 推荐:使用标记位进行处理
  2. interupt 停止,需要根据api, isInterupted 进行判断和第1步中类似
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值