java中的多线程:线程使用、线程安全,SpringCloud微服务详解

本文深入探讨Java中的多线程使用,包括线程启动、Executor线程池的创建与使用,以及Callable和Future获取异步结果。此外,还详细解释了线程安全、线程同步的概念,如synchronized和volatile关键字,以及Lock接口和ReentrantReadWriteLock。最后,介绍了线程间通信的各种方法,如wait/notify、join、sleep和ThreadLocal的应用。
摘要由CSDN通过智能技术生成

thread.start();

Thread thread1 = factory.newThread(runnable);

thread1.start();

复制代码

Executor线程池:


Executor线程池(最为推荐):

Runnable runnable = new Runnable() {

@Override

public void run() {

System.out.println(“Thread with Runnable started!”);

}

};

Executor executor = Executors.newCachedThreadPool();

executor.execute(runnable);

executor.execute(runnable);

executor.execute(runnable);

复制代码

Callable 和 Future:


CallableRunnable类似,同样是只有一个抽象方法的函数式接口。不同的是,Callable提供的方法是有返回值的,而且支持泛型。

@FunctionalInterface

public interface Callable {

V call() throws Exception;

}

复制代码

Callable和Future一般成对出现,future.get()获取异步执行的结果,如果没有结果可用,此方法会阻塞直到异步计算完成。

Callable callable = new Callable() {

@Override

public String call() {

try {

Thread.sleep(1500);

} catch (InterruptedException e) {

e.printStackTrace();

}

return “Done!”;

}

};

ExecutorService executor = Executors.newCachedThreadPool();

Future future = executor.submit(callable);

try {

String result = future.get();

System.out.println("result: " + result);

} catch (InterruptedException | ExecutionException e) {

e.printStackTrace();

}

复制代码

线程安全和线程同步

=========

线程安全:指函数在多线程环境中被调用时,能够正确地处理多个线程之间的全局变量,使得功能正确完成。

线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作。

线程同步不等于

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值