• 如何创建线程


    目录

    一:认识线程

    二:如何构造线程

    1:继承Thread类,重写run方法

    2:实现runnable接口,重写run方法

    3:使用lambda表达式创建runnable子类对象

    4匿名内部类方法


    一:认识线程

    说到线程,我们就不得不提进程。较为官方的定义,进程是系统分配资源的最小单位,这个资源可以是cpu、内存等等。线程是系统调度的最小单位。并且同一个进程下的各个线程之间是可以相互共享资源的。

    具体来说,举个例子,我们平时中午家里妈妈出去买菜,那么买菜就可以算是一个进程,紧接着妈妈让我们去卖鱼,她去买肉,那么这里的卖鱼和卖肉分别是买菜进程下的两个两个线程,那么相应的一些资源,比如用于买菜的钱,买鱼和买肉的时候都可以用。并且这样分头行动比和妈妈一起买完鱼再去买肉,相对的速度要快很对。

    于此,我们发现,多线程可以提升效率。

    二:如何构造线程

    1:继承Thread类,重写run方法

    代码如下

    1. class MyThread extends Thread{
    2. @Override
    3. public void run() {
    4. System.out.println("hello,Thread");
    5. }
    6. }
    7. public class ThreadDemo1 {
    8. public static void main(String[] args) {
    9. Thread t =new MyThread();
    10. t.start();
    11. t.run();
    12. }
    13. }

    2:实现runnable接口,重写run方法

    代码如下

    1. class MyRunnable implements Runnable{
    2. @Override
    3. public void run() {
    4. while (true){
    5. System.out.println("hello,Thread");
    6. try {
    7. Thread.sleep(1000);
    8. } catch (InterruptedException e) {
    9. e.printStackTrace();
    10. }
    11. }
    12. }
    13. }
    14. public class ThreadDemo3 {
    15. public static void main(String[] args) {
    16. Thread t =new Thread(new MyRunnable());
    17. t.start();
    18. }
    19. }

    3:使用lambda表达式创建runnable子类对象

    代码如下

    1. public class ThreadDemo6 {
    2. public static void main(String[] args) {
    3. Thread t =new Thread(() ->{
    4. while (true){
    5. System.out.println("hello thread");
    6. try {
    7. Thread.sleep(1000);
    8. } catch (InterruptedException e) {
    9. e.printStackTrace();
    10. }
    11. }
    12. });
    13. t.start();
    14. }
    15. }

    此外,也可以用匿名内部类的方式创建Thread和Runnable对象

    4匿名内部类方法

    1:Thread

    1. public class ThreadDemo4 {
    2. public static void main(String[] args) {
    3. //这个语法就是匿名内部类
    4. //相当于创建了一个匿名的类,这个类继承了Thread
    5. //此处咱们new的实例,其实就是new了这个新的子类的实例
    6. Thread t =new Thread(){
    7. @Override
    8. public void run() {
    9. while(true){
    10. System.out.println("hello,Thread");
    11. try {
    12. Thread.sleep(1000);
    13. } catch (InterruptedException e) {
    14. e.printStackTrace();
    15. }
    16. }
    17. }
    18. };
    19. t.start();
    20. }
    21. }

    2:Runnable

    1. public class ThreadDemo5 {
    2. public static void main(String[] args) {
    3. Thread t =new Thread(new Runnable() {
    4. @Override
    5. public void run() {
    6. while (true){
    7. System.out.println("hello thread"); try {
    8. Thread.sleep(1000);
    9. } catch (InterruptedException e) {
    10. e.printStackTrace();
    11. }
    12. }
    13. }
    14. });
    15. t.start();
    16. }
    17. }

    以上就是线程进程的一些区别和联系以及创建线程的几种方法,算是有五种吧。 

  • 相关阅读:
    Verilog 线型wire 种类
    PrimalScript通用脚本环境
    js函数新东西——匿名函数
    【Qt之QAssociativeIterable】使用
    Android 屏幕适配
    24.0、 C语言——自定义数据类型_位段
    利用 fail2ban 保护 SSH 服务器
    成都理工大学_Python程序设计_第7章
    学习笔记【1】:决策树
    【Java基础】成员变量和局部变量及封装
  • 原文地址:https://blog.csdn.net/qq_60202930/article/details/125527641