java实现两个线程交替打印1-100_跟光磊学Java开发-Java并发编程入门

并发和并行

  • 并发
    并发指的是在同一个时间段发生,即交替执行。例如单核CPU一次只能处理一个程序,但是为什么我们可以在使用IntelliJ IDEA写代码的同时又可以使用QQ音乐播放音乐呢?因为这两个程序微观上在执行时是交替执行,只不过交替的时间非常短(毫秒级),我们感觉是同时在执行,实际上是并发。单核CPU不能并行处理多个任务,只能是多个任务在单个CPU上并发运行。
  • 并行
    并行指的两个或者多个事件在同一时刻发生,即同时执行 。在多核CPU系统中,并发的程序可以分配到不同的CPU上,实现多任务同时执行,即利用每个处理器来处理一个可以并发执行的程序,这样多个程序便可以同时执行。目前的计算机绝大多数都是多核CPU,核心越多,并行处理的程序越多,能大大提高电脑的运行效率。
eb44265cd9ee8219f3603a27c35589d7.png

CPU信息

进程和线程

  • 进程
    进程是程序的一次执行过程,是系统运行程序的基本单元,系统运行一个程序既是一个进程从创建、运行到消亡的过程。每个进行都拥有一个独立的内存空间,一个应用程序可以运行多个进程(例如QQ就可以登录多个账号)
    Windows任务管理器中可以查看到当前系统运行的进程
  • 线程
    线程是进程的执行单元,负责当前进程中的任务执行,一个进程中至少会有一个线程。但是通常都是一个进程有多个线程,这样的应用程序称为多线程应用程序。每个线程都有独立的栈空间
    一个Java程序就是一个进程,而一个进程一次只能执行一个线程,因此Java程序只有高并发,没有高并行。即多个线程交替执行,没有同时执行。

Java程序运行时,内部同时有多条线程,而此时需要一个线程调度机制,Java线程的调度机制是抢占式调度:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个线程执行。

创建线程的两种方式

在Java中java.lang.Thread类表示线程。如果想要创建线程就需要创建Thread类的对象

  1. 继承Thread类,重写run()方法

PrintThread继承了java.lang.Thread,并且重写任务的方法
@Log4j2注解主要用于日志记录,通过由于log42.xml文件中配置了控制台输出的日志会打印线程信息,因此在程序运行时可以看到当前运行的线程名称。

/** 自定义线程类PrintThread */@Log4j2class PrintThread extends Thread {  /** 重写父类的run()方法 run()方法就是线程执行的任务 */  @Override  public void run() {    for (int i = 0; i < 10; i++) {      //PrintThread的run方法打印i的值      log.info("Print Thread i = "+i);    }  }}

然后在单元测试方法中创建线程对象,调用start()方法启动线程执行线程的任务。
而且主线程中也有和PrintThread一样的任务在执行。

  /**   * 线程创建的方式1 继承Thread类重写run()方法   */  @Test  public void te
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值