ICode9

精准搜索请尝试: 精确搜索
  • 线程睡眠, 中断线程睡眠2021-05-04 16:03:57

    package com.anyan;/** * @author anyan * @date 2021/5/4-11:58 *//*关于线程睡眠的测试程序Thread.sleep(参数为毫秒)在哪个线程中调用,则为哪个线程睡眠当线程睡眠时间过长时,可选择中断其睡眠 intterupt */public class Temp2 { public static void main(String[] args) {

  • ReadWriteLock2021-05-04 09:34:52

    ReadWriteLock /** * 独占锁(写锁) * 一次只能被一个线程占有 * 共享锁(读锁) 多个线程可以同时占有 * * ReadWriteLock * 读-读 可以共存! * 读-写 不能共存! * 写-写 不能共存! */ public class Test04 { public static void main(String[] args) throws Interrup

  • 龟兔赛跑问题(并发)2021-04-30 21:02:14

    并发思想实现龟兔赛跑问题,龟兔相当于两个线性同时执行 //龟兔赛跑 并发问题 public class Race implements Runnable{ private static String winner;//定义获胜方,只有一名 @Override public void run() { //模拟赛道长100 for (int i = 0; i <

  • 身为java开发,掌握这8个Synchronized 用法,你就厉害了!2021-04-28 14:01:28

    简介 本文将介绍8种同步方法的访问场景,我们来看看这8种情况下,多线程访问同步方法是否还是线程安全的。这些场景是多线程编程中经常遇到的,而且也是面试时高频被问到的问题,所以不管是理论还是实践,这些都是多线程场景必须要掌握的场景。 8个场景 接下来,我们来通过代码实现,分别判

  • muduo 库解析之三:CurrentThread2021-04-24 13:01:29

    __thread 线程局部存储 Thread Local Storage(tls),是一种机制,通过这一机制分配的变量,每个当前线程有一个该变量的实例。 在用户层,用一个新的存储类型关键字:__thread 表示这一扩展。 __thread 使用规则: 如果一个线程局部存储变量有一个初始化器,它必须是常量表达式。 __thread 限定

  • ThreadLocal学习(四)2021-04-23 12:59:01

    ThreadLocal学习(四) 了解了ThreadLocalMap之后,里面出现了一个名词 “弱引用” ,那么为什么要将这个设置为弱引用而不是设置成强引用呢? 其实主要是因为内存泄露问题,看下面这张图就知道了: 如果是为强引用的话: 当ThreadLocalRef不再使用ThreadLocal对象并且CurrentThread依然运行

  • java中如何解决线程不安全的问题呢2021-04-23 10:06:12

    下面我们再给出一个线程不安全的例子。 例:1.8.2 class BookMark_to_win {    int bookNum=10;    void onlySellOne() {        if (bookNum > 0) {            System.out.println(Thread.currentThread().getName()                    + "

  • JAVA中Synchronized 的8种用法,绝对实用2021-04-22 16:52:14

    前言 最近针对互联网公司面试问到的知识点,总结出了Java程序员面试涉及到的绝大部分面试题及答案分享给大家,希望能帮助到你面试前的复习且找到一个好的工作,也节省你在网上搜索资料的时间来学习。 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL

  • 自旋锁2021-04-18 15:33:33

    概念和意义 尝试获取锁的线程不会立即阻塞(no wait),而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环消耗cpu   unsafe中的源码 //unsafe.getAndAddInt putlic final int getAndAddInt(Object var1,long var2, int var4){ int var5; do{

  • 读写锁2021-04-18 15:02:45

    读写锁 ReentrantReadWriteLock 读,可多线程读 写,只允许一个写 读读共存 读写不共存 写写不共存 写操作:原子+独占,整个过程必须是一个完整的统一体,中间不需被分割打断 // 资源类 class Mycache{ // 缓存的一般加volatile private volatile Map<String,Object>

  • 测试Thread中的常用方法2021-04-11 02:32:17

                /** * 测试Thread中的常用方法: * 1. start():启动当前线程;调用当前线程的run() * 2. run(): 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中 * 3. currentThread():静态方法,返回执行当前代码的线程 * 4. getName():获取当前线程的名字

  • Java 并发编程之读写锁 ReentrantReadWriteLock2021-04-05 20:05:39

    ReentrantReadWriteLock 允许多个读操作同时进行,但是只允许一个写操作同时进行,在某些情况下,可以实现更高的并发性。 举个栗子: public class ReadAndWriteLockTest { static { System.out.println("static "+Thread.currentThread().isDaemon()); } public

  • Java 并发编程之同步工具类信号量 Semaphore2021-04-05 20:02:36

    Semaphore 可以理解为一个阈值,正在进行的操作数量不能超过此阈值,可以用来限制资源的访问,或者控制某个队列中对象的个数。 public class SemaphoreTest { private Semaphore semaphore = new Semaphore(2); public void m() { try { System.out.prin

  • 多线程从入门到高级(12)--LockSupport与AQS2021-03-18 10:02:04

    一、LockSupport 1.1 简介 LockSupport是用来创建锁和其他同步类的基本线程堵塞原语,LockSupport为JUC并发包下的各种同步组件的底层实现提供了基础。 LockSupport可以用来堵塞线程和唤醒线程,也就是说LockSupport的出现是为了改进原有的wait/notify或者await/signal的不足的。

  • 复习javase多线程2021-03-17 21:03:13

    1.在Java中实现多线程有三种方式 第一种:编写一个类,直接继承java.lang.Thread,重写run方法。 第二种:编写一个类,实现java.lang.Runnable接口。 第三种:创建一个”未来任务类“对象,在参数中需要给一个Callable接口实现类对象。 2.多线程的生命周期    3.线程相关的操作 如何获取

  • 线程优先级Priority2021-03-07 22:02:08

    public class TestThreadPriority { public static void main(String[] args) { System.out.println(Thread.currentThread().getName()+"-->的优先级是"+Thread.currentThread().getPriority()); MyPriority myPriority = new MyPriority();

  • 01-JUC--ThreadPool2021-02-16 12:29:05

    线程池简介 这篇文章写的好。放个连接,是一个非常好的阅读材料。 美团技术团队:https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html 线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。 线程池的重要性 如果不使用

  • 获取classpath(src/main/resources)的绝对路径2021-02-06 16:02:10

    先贴上代码 private static String basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); 原因:方法是通过线程去执行的,因此我们可以通过线程去逆推到类加载器,从而在这个类加载器得到资源的路径。

  • Thread常用方法2021-01-28 21:05:12

    方法 用途 static Thread currentThread() 得到当前线程 getName() 返回线程的名称 setName(String name) 将线程的名称设置为由name指定的名称 start( ) 调用run( )方法启动线程,开始线程的执行 run( ) 存放线程体代码 Thread.sleep(10

  • CompletableFuture 获取所有task的结果2021-01-28 08:01:26

    前置知识1,CompletableFuture 使用supplyAsync 可以直接执行,并得到返回结果2,CompletableFuture get方法,可以得到最终的结果代码 private void foreachGet() throws ExecutionException, InterruptedException { Random random = new Random(); long mainstart = S

  • 交替打印ABC的实现2021-01-13 10:05:21

    实现方案 方案一:使用LockSupport package com.jesse.review.test4; import java.util.concurrent.locks.LockSupport; /** * Created by Kong on 2021/1/13. */ public class Test41 { static Thread threadA, threadB, threadC; public static void main(String[] a

  • CompletableFuture异步计算结果(2) 按顺序执行异步任务2021-01-09 14:03:44

    1.thenAccept方法,前置子线程运行成功才执行,能获取前一个任务结果,无返回结果 thenAccept 前置执行成功,后续仍使用前置的子线程执行,无返回结果 thenAcceptAsync一个参数方法 前置执行成功,后续使用守护线程执行,无返回结果 thenAcceptAsync两个参数方法 前置执行成功,后续使用新

  • IDEA使用springboot自带scheduled实现任务调度2021-01-05 18:11:27

        之前写过使用quartz、xxl实现任务调度,最近有空总结了使用springboot自带的scheduled方式实现任务调度 打开IDEA选择file->new->project 写上group名和artifact名 选择web项目,选择Spring Web,最后下一步完成即可 pom.xml文件中添加日志打印依赖 <!-- SLf4j

  • 多线程——龟兔赛跑问题2020-12-20 11:01:49

    龟兔赛跑 100米两条线程 一个乌龟 一个兔子 如果是兔子的话设置延迟函数 当有一方胜出 马上跳出循环 ==>比赛终止 package Lesson_Thread; public class Race implements Runnable { private static String winner; @Override public void run() { //开始跑步

  • lamda表达式2020-12-11 22:36:13

    public class Demo02Lambda { public static void main(String[] args) { // 简化代码 new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName() + "----->新线程被创建了!"); } }).start(); // (参数列表) -> {一些重

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有