多线程基础(一)

多线程基础(一)

线程是并发运行的,即多个线程运行时靠线程调度器统一管理。
线程调度程序会分配给线程CPU时间片段,得到时间片的线程被CPU执行,
当超时后CPU会停滞执行该线程,此时线程调度会再次分配时间片给某个线程继续操作.
所以多个线程之间,每个线程的运行都是走走停停的,这种运行方式称为并发运行.
由于CPU在所有线程间快速切换运行,感官上这些线程的代码都是"同时运行"的.

线程的创建有两种方式:
1.继承Thread,并重写run方法来定义要运行的任务。

2.实现Runnable接口,单独定义线程任务。

第一种创建线程的方式结构简单,利于使用匿名内部类创建
但也存在两个明显不足:
1:由于需要继承Thread,而Java本身是单继承,这就导致如果继承Thread就不能继承其他类,这在实际开发中会有诸多不便
2:继承Tread后需要重写run方法来定义线程要执行的任务,这就导致线程与任务存在了一个必然的耦合关系,不利于线程的重用
第二种方法创建线程的演示

class MyRun implements Runnable{
    public void run(){
        for(int i=0;i<1000;i++){
            System.out.println("Go");
        }
}

public static void main(String[] args) {
        //单独创建任务
        Runnable r = new MyRun();
        //创建线程
        Thread t = new Thread(r);
        t1.start();
    }

也可以使用匿名内部类

Runnable r = new Runnable(){
            public void run() {
                for(int i=0;i<1000;i++){
                    System.out.println("Go");
                }
            }
        };
        Thread t = new Thread(r);
        t.start();

线程中提供的一些方法介绍

方法名作用
void join()可以使一个线程在另一个线程上等待(置于阻塞状态),直到另一个线程完成后再继续运行
static Thread currentThread()获取到运行这个方法的线程
static void sleep(long ms)将运行该方法的线程置于阻塞状态于指定的毫秒。当超时后,线程会重新回到RUNNABLE状态,等待获取CPU时间片再次并发运行
long getId()获取线程的唯一标示
String getName()获取线程名字
int getPriority()获取线程优先级
boolean isAlive()判断线程是否处于活动状态
boolean isDeamon()判断线程是否为守护线程
boolean isInterrupted()判断线程是否是被中断的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值