随笔分类 -  Java多线程

Java 中12个原子操作类
摘要:从JDK1.5 开始提供了 java.util.concurrent.atomic 包,该包提供了一种用法简单、性能高效、线程安全的更新一个变量的方法 原子更新基本类型类 AtomicBoolean:原子更新布尔类型 AtomivInteger:原子更新整型 AtomicLong:原子更新长整型 原 阅读全文

posted @ 2019-01-31 01:25 0820LL 阅读(229) 评论(0) 推荐(0) 编辑

Java中的4个并发工具类 CountDownLatch CyclicBarrier Semaphore Exchanger
摘要:在 java.util.concurrent 包中提供了 4 个有用的并发工具类 CountDownLatch 允许一个或多个线程等待其他线程完成操作,课题点 Thread 类的 join() 方法 CyclicBarrier 可以用于多线程计算数据,最后合并计算结果的场景 Semaphore 用来 阅读全文

posted @ 2019-01-31 01:05 0820LL 阅读(265) 评论(0) 推荐(0) 编辑

进程 线程 协程
摘要:进程 Process 线程 Thread 协程 Coroutine 阅读全文

posted @ 2019-01-23 17:01 0820LL 阅读(102) 评论(0) 推荐(0) 编辑

synchronized Lock
摘要:synchronized和Lock都是Java语言提供的两种实现对共享资源进行同步的机制。其中synchronized使用Object对象本身的wait()、notify()、notifyAll()方法实现调度机制,而Lock可以使用Condition进行进程之间的调度,完成synchronized 阅读全文

posted @ 2018-09-25 00:09 0820LL 阅读(170) 评论(0) 推荐(0) 编辑

sleep()方法和yield()方法有什么区别?
摘要:两者都是Thread类的静态方法,定义如下 public static void sleep(long millis) throws InterruptedException public static void yield() 1)sleep()方法给其他线程机会时不会考虑线程的优先级,因此会给低 阅读全文

posted @ 2018-09-24 22:25 0820LL 阅读(247) 评论(0) 推荐(0) 编辑

start()方法和run()方法有什么区别?
摘要:通过调用线程类的start()方法来启动一个线程,使线程处于就绪状态,即可以被JVM来调度执行,在调度过程中,JVM通过调用线程类的run()方法来完成实际的业务逻辑,当run()方法结束后,此线程就会终止。 如果直接调用线程类的run()方法,会被当作一个普通的函数调用,程序中仍然只有主线程这一个 阅读全文

posted @ 2018-09-24 19:42 0820LL 阅读(2463) 评论(0) 推荐(0) 编辑

同步和异步有什么区别?
摘要:所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或者继续执行后续操作。 异步跟同步相对,当一个异步调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。当这个调用完成后,一般通过状态、通知和回调的方式来通知调用者。对于异步调用,调用的返回并不受调用者控制。 根据同步的定义 阅读全文

posted @ 2018-09-24 18:17 0820LL 阅读(1463) 评论(0) 推荐(0) 编辑

Java中 i++ 是线程安全的么?为什么?
摘要:问题 在 int i = 0; i = i++; 语句中,i = i++是线程安全的么?如果不安全,请说明上面操作在JVM中的执行过程,为什么不安全?说出JDK中哪个类能达到以上的效果,并且是线程安全而且高效的,简述其原理。 回答 语句 i = i++;不是线程安全的。 该语句执行过程如下, 先把 阅读全文

posted @ 2018-09-24 13:31 0820LL 阅读(7972) 评论(0) 推荐(0) 编辑

线程间通讯
摘要:1. volatile 和 synchronized 关键字 2. 等待/通知机制 3. 管道输入/输出流 4. Thread.join()的使用 5. ThreadLocal的使用 1. volatile 和 synchronized 关键字 根据 volatile 和 synchronized 阅读全文

posted @ 2018-09-23 10:46 0820LL 阅读(153) 评论(0) 推荐(0) 编辑

同步代码赏析
摘要:1 package com.test.multithreadDemo; 2 3 import java.io.*; 4 import java.util.Map; 5 import java.util.Random; 6 import java.util.concurrent.locks.Condition; 7 import java.util.concurren... 阅读全文

posted @ 2018-09-21 17:30 0820LL 阅读(102) 评论(0) 推荐(0) 编辑

wait()和sleep()的区别
摘要:wait()是Object类的方法,当一个线程执行到wait()方法时,该线程就进入到一个和该线程相关的等待池中,同时释放了对象锁(暂时失去对象锁,wait(long timeout)超时时间到后还需要返还对象锁),其他线程可以访问同步方法或同步代码块; wait()使用notify() / not 阅读全文

posted @ 2018-09-19 18:58 0820LL 阅读(245) 评论(0) 推荐(0) 编辑

Java线程的六种状态
摘要:根据 java.lang.Thread.State 中的描述Thread有处于以下6种状态中的一种: NEW(初始状态):A thread that has not yet started is in this state RUNNABLE(就绪状态):A thread executing in t 阅读全文

posted @ 2018-09-18 11:12 0820LL 阅读(245) 评论(0) 推荐(0) 编辑

Java 线程池 Executor 框架
摘要:在Java中,可以通过new Thread 的方法来创建一个新的线程执行任务,但是线程的创建是非常耗时的,而且创建出来的新的线程都各自运行、缺乏统一的管理,这样的后果是可能导致创建过多的线程从而过度消耗系统的资源,最终导致性能急剧下降,线程池的引入就是为了解决这些问题。 所谓线程池就是将多个线程放在 阅读全文

posted @ 2018-09-13 15:31 0820LL 阅读(363) 评论(0) 推荐(0) 编辑

Java中多线程访问冲突的解决方式
摘要:当时用多线程访问同一个资源时,非常容易出现线程安全的问题,例如当多个线程同时对一个数据进行修改时,会导致某些线程对数据的修改丢失。因此需要采用同步机制来解决这种问题。 第一种 同步方法 第二种 同步代码块 第三种 使用特殊成员变量(volatile 成员变量)实现线程同步(前提是对成员变量的操作是原 阅读全文

posted @ 2018-09-12 11:28 0820LL 阅读(5425) 评论(0) 推荐(0) 编辑

java多线程的三种实现方式
摘要:第一种 实现Runnable接口,覆写run()方法 第二种 继承Thread类,覆写run()方法 第三种 利用Callable接口、Executors工具类、ExecutorService接口、Future接口实现有返回结果的多线程 第一种 实现Runnable接口,覆写run()方法 ① 自定 阅读全文

posted @ 2018-09-06 01:35 0820LL 阅读(327) 评论(0) 推荐(0) 编辑

Java中终止线程的三种方法
摘要:终止线程一般建议采用的方法是让线程自行结束,进入Dead(死亡)状态,就是执行完run()方法。即如果想要停止一个线程的执行,就要提供某种方式让线程能够自动结束run()方法的执行。比如设置一个标志来控制循环是否执行,通过这种方式让线程离开run()方法。 第一种 使用Thread类提供的stop( 阅读全文

posted @ 2018-08-30 11:10 0820LL 阅读(1177) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示