多线程之Thread--JAVA

@java笔记


原来对多线程理解不多,所以整理笔记加深多多线程的理解,同时也方便日后的学习、复习!!希望可以共同交流,一起进步!


首先看一下线程进程的区别(在java面试或者android面试中经常会问到这些问题):

1.CPU负责整个计算机的处理工作(它就像一个工厂);
2.一个CPU一次只能运行一个任务(当我们这个工厂的电或者原料不充足时,只能供一厂房运行),而进程代表该工厂的一个厂房,代表CPU所能运行的单个任务(CPU在任何时刻都只运行一个进程)
3.一个进程包含很多线程 (就像一个车间里有很多工人一样,而进程就是车间的工人);
4.线程共享车间的空间(就像我们在工作时,在这个车间我们可以来回走动,也可以更换我们的工作地点);
5.而在我们使用某些存储空间时,其他工人就得等我们使用完(比如我们在卫生间时,其他人必须等我们使用完他们才可以用)
6.为了防止其他人使用我们一般都会上锁(在火车上我们一般都会上锁,使用完后会给别人一个信号灯提示),这就是“锁”,防止多个线程公用同一个存储区域
7.有的房间也可以让多个人同时操作假如人数为M,但是当人数大于M时我们就必须禁止其他人进入这个区域,我们也会上锁(这就是我们要讲的多线程)

为什么使用多线程? 为了工作效率!!!

线程从创建到结束会经历创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)
线程运行时当然也会有多种状态time waiting(睡眠或等待一定的事件)、waiting(等待被唤醒)、blocked(阻塞)

这里写图片描述

用一个简单的例子来说明Thread

public class ThreadDemo extends Thread{
  public class Score(){

  }

  public class Score(String Num){
  this.Num=Num;
  }
   public void run() {
        for (int i = 0; i < 3; i++) {
            System.out.println(name + "=" + i);
        }
    }
     public static void main(String[] args) {
        Score s1=new Score("A");
        Score s2=new Score("B");
        s1.run();
        s2.run();
    }
  }

运行结果:

【运行结果】:

A= 0

A=1

A= 2

B= 0

B=1

B= 2

当我们看到这些结果时,我们可能会想为什么?我看了很多关于这块的解释,也参考了些博客,他们基本都没有对这块详细解说,我的猜测可能是线程在计算机内部执行需要一定的条件

当我们调用的不是run();而是start()方法时运行结果会改变,感兴趣的可以自己试一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值