多线程
多线程
一个长不胖的程序YUAN
来自贵州遵义,儿时留守形成一种独立思考、做事严谨、不怕吃苦的性格。喜欢与人交流分享知识,喜欢研究技术与阅读优秀作品。学习,这条路总是孤独并充满喜悦的。社会中有很多机遇,是否成功在于你如何把握。当然在机遇中也会遇到朋友,你必须学会信任,吸收每一份掌声,坚信每一点实力,展现自己的未来。愿你我越来越幸福...
展开
-
演示提交任务方法execute()、submit()的区别
向线程池提交任务的两个方法 execute()、submit() 的区别,我总结的主要有四点(1)申明位置不同:execute() 方法定义在 Executor 接口中,submit() 方法定义在 ExecutorService 接口中; ExecutorService 接口继承了 Executor 接口。(2)可传参数不同: execute() 方法参数只能传入 Runnable 接口;submit() 方法有三个重载的方法;public interface ExecutorServ.原创 2020-09-08 11:36:00 · 10811 阅读 · 6 评论 -
Java中提升锁性能及锁的优化注意事项
一、减少锁持有时间对于使用锁进行并发控制的应用程序来说,如果单个线程特有锁的时间过长,会导致锁的竞争更加激烈,会影响系统的性能。在程序中需要尽可能减少线程对锁的持有时间,如下面伪代码:public synchronized void syncMethod() { otherCode1(); //不需要进行同步加锁的方法,但是它需要的执行时间很长 mutexMethod(); //需要进行同步加锁的方法 other原创 2020-09-02 17:37:36 · 12550 阅读 · 8 评论 -
Java中几种保障线程安全的设计技术
说明:以下我主要从面向对象设计的角度出发介绍几种保障线程安全的设计技术,这些技术可以使得我们在不必借助同步锁的情况下保障线程安全,这就避免锁可能导致的问题及其资源的开销。文章目录一、变量定义为局部变量二、无状态(数据)对象三、不可变对象(final)四、构建线程私有对象一、变量定义为局部变量JVM里规定,Java运行数据区可以划分为以下五部分:线程私有:Java虚拟机栈、本地方法栈、程序计数器线程共享:堆空间、方法区(非堆)对JVM不太了解的朋友,可以看看我的这系列文章1、Java虚拟机栈:.原创 2020-09-02 11:09:49 · 12453 阅读 · 2 评论 -
Java获取CPU数量及线程池怎样设置最大线程数量公式
Java代码:System.out.println(Runtime.getRuntime().availableProcessors()); //输出本机CPU的数量,是一个数字线程池设置最大线程数量公式:线程池大小 = CPU的数量 × 目标CPU的使用率 × (1+等待时间与计算时间的比)有用点个关注,手留余香! ???? ???? ????...原创 2020-09-01 13:07:22 · 11421 阅读 · 6 评论 -
多线程中wait()、sleep()、notify()和notifyAll()方法异同点【面试】
现在面试基本上都会被问及到多线程,就有很高概率问到wait() 和 sleep() 这两者的区别1、wait()、sleep() 方法相同点(1)都是对线程的操作;(2)都需要抛异常; (这一点我遇到很多人答错,记住这两者都会抛异常)(3)都会让当前运行线程进入阻塞状态。2、wait()、sleep() 方法不同点(1)使用位置不同: wait() 方法必须在同步代码中,sleep() 则不需要;(2)申明位置不同: wait() 方法是 Object类 中的方法,sleep() 方法是 T.原创 2020-08-17 07:44:53 · 2545 阅读 · 5 评论 -
Java创建线程的方式是哪四种?比较优缺点,为什么要用线程池
Java创建线程四种方式:1. 继承Thread类;2. 实现Runnable接口;3. 实现Callable接口,实例化FutureTask类;4. 创建线程池(以下用Executor框架实现)说明:这四种方式都潜移默化都用到了Thread类(表示线程),所有线程对象都是Thread类或者其子类的实例,所以还有可以<匿名创建>线程,文章最后有分享。详细介绍四种方法:方式一:实现类继承Thread类步骤:①实现类去继承Thread类;②实现类重写Thread类中的run(原创 2020-06-10 00:55:13 · 15638 阅读 · 0 评论