如何实现Java多线程

如何实现Java多线程


认识多线程
进程
进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。
进程的特点:

  • 进程是系统运行程序的基本单位。
  • 每一个进程都有自己独立的一块内存空间、一组系统资源。
  • 每一个进程内部数据和状态都是完全独立的。

线程
线程是进程执行运算的最小单位,一个进程在其执行过程中可以产生过个线程,而线程必须在某个进程中执行。
线程和进程既有联系又有区别,具体如下:

  • 一个进程中至少有一个线程。
  • 资源分配给进程,同一进程的所有线程共享该进程的所有资源。
  • 处理机分配给线程,即真正在处理机上运行的是线程。

使用多线程
一个进程正在运行时至少会有一个线程在运行,这种情况在Java种也是存在的,这些线程在后台运行,例如:
1.png-12.3kB
运行结果如下:
2.png-3.7kB
在控制台输出的main其实就是一个名称为main的线程在执行main()方法中的代码。另外说明一下,控制台输出的main和main()没有任何关系,只是名字相同而已。

线程的创建
实现多线程主要有三种方式:第一种是继承Thread类,第二种是实现Runnable接口,第三种是通过Callable和 Future创建线程。
通过继承Thread类创建线程
代码如下:

3.png-13.3kB

5.png-16.5kB
运行结果如下:
4.png-5kB
start()方法执行步骤如下:

  • 通过JVM告诉操作系统创建线程。
  • 操作系统开辟内存创建线程。
  • 操作系统对Thread对象确定执行时机。
  • Thrad被成功执行。

上述代码使用start()方法来启动一个线程,线程启动后会自动调用线程对象中的run()方法,run()方法里面的代码就是线程对象要执行的任务,是线程执行任务的入口。因为main()方法不必像MyThread的start()方法那样经过那么多的步骤而是直接执行,因此main()方法大多数情况比MyThread的start()耗时少,在控制台先打印出来。在使用多线程技术时,代码的运行结果与代码的执行顺序或调用顺序是无关的。

通过实现Runnable接口创建线程
如果想创建的线程已经有一个父类了,就不能再继承自Thread类,所以必须实现Runnable来解决要实现多线程的问题。代码如下:
6.png-11.6kB

7.png-19.1kB
运行结果如下:
8.png-4.9kB

通过Callable和Future创建线程

代码如下:
10.png-65.5kB

9.png-25.6kB
运行结果如下:
12.png-7.2kB

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值