java日记之并发编程第一天(一)

创建线程和运行线程

首先看一下一个方法的执行都经过了什么
只有一个主线程的时候详细执行过程
在这里插入图片描述
结合idea看下两个线程同时执行发生的事情
在这里插入图片描述

1.创建线程方式一

//TODO 创建线程
Thread t = new Thread(){
	public void run(){
		//执行的任务
	}
}
//TODO 运行需要执行的任务
t.start();

2.创建线程的方式二
线程创建和任务分开

//callable方法中的call方法可以抛出异常,且有返回值,若果需要知道新线程执行的结果一级抛出的异常,可以用这个
Callable<String> callable = new Callable<String>() {
            @Override
            public String call() throws Exception {
              //TODO 需要执行的操作
              return "";
            }
        };
        Thread thread = new Thread(task,"T");
//runnable方法无返回值,不能抛异常
Runnable task = new Runnable() {
            @Override
            public void run() {
                //TODO 需要执行的操作
            }
        };
        Thread thread = new Thread(task,"T");
//看实际需求选取call或者run

3.创建线程的方式三
使用FutrueTsk,此方法相当于对Callable的扩展,使用get()可以获取任务执行返回的结果,get()方法为阻塞方法,会等待线程执行完内容返回结果get到结果才会继续执行,如果需要执行的任务抛出异常或者未返回内容结果,会使代码执行一直卡在get方法这里

FutureTask<String> task = new FutureTask<String>(new Callable<String>() {
            @Override
            public String call() throws Exception {
                // TODO 需要执行的操作
                return "";
            }
        });
        Thread thread = new Thread(task,"T");
        String s = task.get();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值