多线程

线程和进程:

进程是指程序的动态执行全过程,每个进程的内存空间都是独立的,拥有自己的堆栈,可以理解为不同的应用。线程是比进程更小的单位,多线程是指一个进程在执行过程中可以产生多个更小的线程,这些线程可以同时存在,同时运行。举个例子:你电脑可能同时在运行不同的软件,假如你开一个QQ那么QQ就是一个进程,你用qq和别人说话或者斗图就是不同的线程。

同步异步:

当不同的执行者同时想要操作一个方法或更改同一个变量的时候,同步就是排队去执行,效率低但是安全;异步就是同时执行,效率搞,但是不安全。

并发并行:

并发:指的是两个或多个事情在指定的时间段内同时发生的事情。并行:同时发生,同时进行。这里我理解的是,并发不一定是同一时刻,可能是今天发生的事情,而并行则是同一时刻时发生。

实现多线程:

一种是继承 Thread 类,另一种就是实现 Runnable 接口(还有一种callable)。

继承Thread:
public class Test extends Thread{
    public static void main(String[] args) {
       Demo demo1=new Demo();
       Demo demo2=new Demo();
       demo1.start();
       demo2.start();
    }

}
class Demo extends Thread{
    @Override
    public void run() {
        for(int i=0;i<3;i++){
        System.out.println("hello"+i+Demo.currentThread().getName());
        }
    }
}

结果:

hello1Thread-1
hello2Thread-1
hello0Thread-0
hello1Thread-0
hello2Thread-0

可以看到,在你没有指定线程名称的时候系统会自动给线程命名,然后线程执行的顺序是随机的,看谁先抢到谁就先执行。

实现Runnable:
public class Test{
    public static void main(String[] args) throws InterruptedException {
       Demo demo1=new Demo();
       Demo demo2=new Demo();
       Thread mythread1=new Thread(demo1);
       Thread mythread2=new Thread(demo2);
       mythread1.start();
       mythread2.start();
    }

}
class Demo implements Runnable{
    @Override
    public void run() {
        for(int i=0;i<3;i++) {
            System.out.println("hello" + i);
        }
    }
}

其实和Thread没啥差别,但是实现runnable更适用于多个线程同时执行相同任务的情况,避免了单继承的局限性,使任务线程分离,程序更健壮,并且后续学习的线程池,不接受Thread的线程。
Thread类里面的方法不多讲了,自己看api吧,应该还挺好懂的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值