【Java高并发】总结创建线程的方法

继承Thread类实现run方法

步骤:

  1. 定义类继承Thread;
  2. 重写Thread类中的run方法;(目的:将自定义代码存储在run方法,让线程运行)
  3. 调用线程的start方法:(该方法有两步:启动线程,调用run方法)
public class UseThread { 

    public static void main(String[] args) { 

        System.out.println(1); 
        System.out.println(2); 
        new MyTask().start(); 
        System.out.println(3); 
        try {
            Thread.sleep(100); 
        } catch (InterruptedException e) { 
            e.printStackTrace(); 
        }
        System.out.println(4); 

    }

    static class MyTask extends Thread{ 

        @Override 
        public void run() { 
            System.out.println("这是通过继承实现的多线程!");
 
        } 
    } 
}
上面一段 demo 中所用到的方法如下:
方法
作用
join()
让当前这个线程阻塞 等 join() 的线程执行完毕再执行
setName()
设置线程名称
getName()
获取线程名称
currentTHread()
获取当前运行的线程对象

 

实现Runnable接口

注意事项 : 接口应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个称为 run 的无参方法。
 
 
步骤:
  1. 创建任务: 创建类实现Runnable接口
  2. 使用Thread 为这个任务分配线程
  3. 开启任务 Start()
 
使用方式 1--- 创建一个类实现 Runnable 接口,使用 Thread 来操作这个任务
public class UseRunnable { 

        public static void main(String[] args) { 
        System.out.println(1); 
        System.out.println(2); 
        new Thread(new Task()).start(); 
        System.out.println(3); 
        try {
            Thread.sleep(100); 
            } catch (InterruptedException e) { 
            e.printStackTrace(); 
            }
        System.out.println(4); 
    }

    static class Task implements Runnable{ 
        public void run() { 
            System.out.println("这是我的第一个线程方法"); 
        } 
    } 
} 

使用Lammbda表达式

new Thread(()->{ 
    for(int i=0;i<=100;i++){ 
        System.out.println(Thread.currentThread().getName()+":"+i); 
    } 
}).start(); 

有返回值的线程

public class UseCallable { 

    public static void main(String[] args) throws Exception { 
        System.out.println(2); 
        FutureTask<Integer> futureTask = new FutureTask<Integer>(new Task()); 
        System.out.println(3); 
        new Thread(futureTask).start(); 
        System.out.println(4); 
        int result = futureTask.get(); 
        System.out.println(5); 
        System.out.println(result); 
        System.out.println(6); 
    }
    static class Task implements Callable<Integer> { 
        public Integer call() throws Exception { 
            Thread.sleep(2000); 
            return 1; 
        } 
    } 
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值