认识Thread

一.概念

⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代码. 多个线程之间 "同时" 执⾏ 着多份代码.
还是回到我们之前的银⾏的例⼦中。之前我们主要描述的是个⼈业务,即⼀个⼈完全处理⾃⼰的业
务。我们进⼀步设想如下场景:
⼀家公司要去银⾏办理业务,既要进⾏财务转账,⼜要进⾏福利发放,还得进⾏缴社保。
如果只有张三⼀个会计就会忙不过来,耗费的时间特别⻓。为了让业务更快的办理好,张三⼜找来两
位同事李四、王五⼀起来帮助他,三个⼈分别负责⼀个事情,分别申请⼀个号码进⾏排队,⾃此就有
了三个执⾏流共同完成任务,但本质上他们都是为了办理⼀家公司的业务。
此时,我们就把这种情况称为多线程,将⼀个⼤任务分解成不同⼩任务,交给不同执⾏流就分别排队
执⾏。其中李四、王五都是张三叫来的,所以张三⼀般被称为主线程(Main Thread)。
 
多线程程序和普通程序的区别:
每个线程都是⼀个独⽴的执⾏流
多个线程之间是 "并发" 执⾏的.
二.第一个多线程程序
import java.util.Random;
public class ThreadDemo {
        private static class MyThread extends Thread {
                @Override
                public void run() {
                        Random random = new Random();
                while (true) {
                        // 打印线程名称
                        System.out.println(Thread.currentThread().getName());
                        try {
                        // 随机停⽌运⾏ 0-9 秒
                        Thread.sleep(random.nextInt(10));
                } catch (InterruptedException e) {
                        e.printStackTrace();
                        }
                }
        }
}
        public static void main(String[] args) {
                MyThread t1 = new MyThread();
                t1.start();
                Random random = new Random();
                while (true) {
                        // 打印线程名称
                        System.out.println(Thread.currentThread().getName());
                        try {
                                Thread.sleep(random.nextInt(10));
                        } catch (InterruptedException e) {
                        // 随机停⽌运⾏ 0-9 秒
                                e.printStackTrace();
                        }
               }
        }
}
三.创建线程
方法一:继承Threa类
class MyThread extends Thread {
         @Override
         public void run() {
                 System.out.println("这⾥是线程运⾏的代码");
         }
 }
创建 MyThread 类的实例         
        MyThread t = new MyThread();
调⽤ start ⽅法启动线程
         t.start(); // 线程开始运⾏
方法二: 实现 Runnable 接⼝
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("这⾥是线程运⾏的代码");
}
}
2. 创建 Thread 类实例, 调⽤ Thread 的构造⽅法时将 Runnable 对象作为 target 参数.
1 Thread t = new Thread(new MyRunnable());
3. 调⽤ start ⽅法
1 t.start(); // 线程开始运⾏
两种变形
// 使⽤匿名类创建 Runnable ⼦类对象
Thread t2 = new Thread(new Runnable() {
 @Override
 public void run() {
 System.out.println("使⽤匿名类创建 Runnable ⼦类对象");
 }
});

• lambda 表达式创建 Runnable ⼦类对象
// 使⽤ lambda 表达式创建 Runnable ⼦类对象
Thread t3 = new Thread(() -> System.out.println("使⽤匿名类创建 Thread ⼦类对
象"));
Thread t4 = new Thread(() -> {
 System.out.println("使⽤匿名类创建 Thread ⼦类对象");
});
多线程的优势就是可以增加运行速度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值