Java多线程 线程创建 详解

java基础(jdk1.8)

**

多线程—线程创建

**

此篇博客主要讲如何创建线程,并且创建线程的区别


继承Thread类

线程创建第一种方式,即直接继承线程类,并使用线程的方法即可。

    //继承Thread类必须实现run方法,也就是线程执行的任务
    class MyThread extends Thread{
    	public void run(){
    		//run的方法具体实现
    	}    
    }

	//调用位置
    Thread t = new MyThread();
    t.start();

实现Runnable接口

	//实现Runnable接口需要实现run方法,线程执行的任务体
	class MyRunnable implements Runnable{
		public void run(){
    		//run的方法具体实现
    	}  
	}
	
	//调用位置  启动
	Runnable r = new MyRunnable();
	Thread t = new Thread(r);
	t.start();

实现Callable接口

	//实现Callable接口需要实现call方法,线程执行的任务体
	class MyCallable implements Callable{
		public Object call(){
    		//call的方法具体实现
    		return 0;
    	}  
	}
	
	//调用位置  启动
	Callable c = new MyCallable();
	Thread t = new Thread(c);
	t.start();

创建线程的区别

  • 1.创建方式
    继承与实现的区别

  • 2.Runnable和Callable区别
    runnable需要实现run方法,方法无返回值
    callable实现call方法,方法有返回值

	call方法可以返回Object类型然后放入Future内达到对线程执行过程的检测

创建线程快捷方式

	//第一种方式,匿名内部类
	new Thread(new Runnable() {
        @Override
        public void run() {
        	System.out.println(Thread.currentThread().getName());
        }
    },"t1").start();
    
    
    //第二种方式, lambda表达式
    new Thread(()->{
    	System.out.println(Thread.currentThread().getName());
    },"t2").start();
    
    
    //第三种方式
    private static class A{
        public void get(){
        }
    }
    A a = new A();
    new Thread(a::get).start(); //将get方法作为线程的run方法

run方法和start方法的区别

start方法
start方法启动一个线程,并调用run方法

run方法
run方法直接执行方法体,并不会创建线程,执行方法的线程是调用run方法的那个线程

	public static void main(String[] args) {
        new Thread(()-> {
            //Thread.currentThread().getName()是打印当前执行线程的名称
            System.out.println(Thread.currentThread().getName());
        },"t1").run();

        new Thread(()->{
            System.out.println(Thread.currentThread().getName());
        },"t2").start();
    }

运行结果

    main
    t2

证明第一个打印语句是由mian线程执行,第二个打印语句由t2线程执行

说明run方法不会启动一个新的线程

上一篇 》进程与线程关系


下一篇 》Thread类常用方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值