![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程
文章平均质量分 53
whuruby
珞珈山下的理想,一分耕耘一分收获
展开
-
java Thread interrupt方法
1、interrupt用于打断【正在执行】的线程 如果当前运行线程处于sleep或wait状态 如果当前运行线程没有处于sleep或wait状态,该方法只是将线程的interruptedStatus=true, 此时可以通过两种方式获取线程中断状态: Thread类静态方法:Thread.interrupted(),如果该线程被打断,方法返回true,同时将interruptStat原创 2017-06-30 11:42:33 · 403 阅读 · 0 评论 -
Java线程池技术
一、线程池概述1、为什么需要线程池提高性能,不用频繁创建&销毁线程方便管理调度2、线程池要素待执行任务(Runnable、Callable)谁来执行(Executor、ExecutorService)执行结果(Future)二、线程池基础框架public ThreadPoolExecutor(int corePoolSize,原创 2017-11-02 16:03:31 · 222 阅读 · 0 评论 -
Socket通信基础
1、判断socket连接状态 socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,这些方法都是本地端的状态,无法判断远端是否已经断开连接 sendUrgentData,查看文档后得知它会往输出流发送一个字节的数据3、通信协议定义 协议组成:协议类型、版本号、数据类原创 2017-11-10 13:58:21 · 231 阅读 · 0 评论 -
Java模拟耗时任务异步执行
说明:耗时任务开启单独线程处理,任务线程处理完毕通知主线程1、回调接口定义public interface ResponseCallBack { public void printMsg(String msg);}2、模拟耗时任务线程public class TestMain { public static void main(String[] args)原创 2017-11-07 20:15:58 · 5098 阅读 · 0 评论 -
Java内存模型学习
1、JVM内存主要由线程栈和堆两部分组成,JVM支持多线程,并为每个线程分配一个线程栈。2、每个线程栈都有一个方法调用堆栈,用于追溯各个方法的逻辑调用过程,每个方法中会创建很多局部变量,尽管不同线程会执行同样的方法,但是每个线程会有不同的局部变量拷贝,8种基本数据类型(boolean, byte, short, char, int, long, float, double)变量都存储在线程原创 2017-06-20 22:36:28 · 199 阅读 · 0 评论 -
semaphore学习
1、semaphore概述 semaphore可以看作是一个许可的集合,用于控制多个线程对有限共享资源的访问。当某个线程需要访问资源时,必须首先从semaphore获取一个许可,使用完资源后再将许可归还给semaphore。2、semaphore常用方法控制共享资源的多线程访问 (1)初始化许可数量 private static final int MAX_AVAILABLE =原创 2017-09-14 20:46:12 · 374 阅读 · 0 评论 -
Java等待多个线程执行完毕
1、使用joinpublic class TestCountDownLatch2{ public static void main(String[] args) throws InterruptedException { Thread[] threadArr = new Thread[10]; for(int i = 0; i < 10; i+原创 2017-08-29 09:07:22 · 822 阅读 · 0 评论 -
ReentrantLock学习
1、ReentrantLock介绍 ReentrantLock是一种可重入的共享或排它锁 ReentrantLock内部使用CAS实现,不会像Synchronized引起上下文切换和线程调度 ReentrantLock提供比Synchronized更多的功能2、ReentrantLock排它锁 代码示例public class TestTest{ public st原创 2017-09-07 10:19:37 · 258 阅读 · 0 评论 -
Java分布式锁
1、分布式锁需求广泛存在于分布式应用三种方案的比较从理解的难易程度角度(从低到高)数据库 > 缓存 > Zookeeper从实现的复杂性角度(从低到高)Zookeeper >= 缓存 > 数据库从性能角度(从高到低)缓存 > Zookeeper >= 数据库从可靠性角度(从高到低)Zookeeper > 缓存 > 数据库原创 2017-06-15 16:06:05 · 273 阅读 · 0 评论 -
Java wait和notify结合使用
1、代码示例public class TestSyncro2 { public static void main(String[] args) { final Customer customer = new Customer(); Thread t1 = new Thread(new Runnable() { @Override原创 2017-06-28 13:58:07 · 314 阅读 · 0 评论 -
Java sleep和wait实例比较
1、代码示例public class TestSyncro { public static void main(String[] args) { Person testP = new Person(); Thread1 t1 = new Thread1(testP); Thread2 t2 = new Thread2(testP);原创 2017-06-28 11:18:48 · 546 阅读 · 0 评论 -
Java 多线程死锁
1、死锁出现:线程1占有锁A,线程2占有锁B,线程1必须等待锁B释放后才能继续(进而才能释放锁A),线程2必须等待锁A释放后才能继续(进而才能释放锁B),因此导致了死循环等待2、代码模拟死锁public class ThreadDeadLock { public static void main(String[] args) { final String str1 = "resou原创 2017-06-15 14:46:29 · 1058 阅读 · 0 评论 -
Java多线程基础
1、垃圾回收(1)哪些对象会被gc回收设置对象为nullEmployee e=new Employee(); e=null; 无引用对象Employee e1=new Employee(); Employee e2=new Employee(); e1=e2;//now the first object referred by e1 is available fo原创 2017-06-14 17:00:48 · 187 阅读 · 0 评论 -
Java三种不同的锁
Java中,锁分为乐观锁和悲观锁两类(数据库乐观锁和悲观锁参考 http://blog.csdn.net/liupeng_qwert/article/details/72935469)悲观锁:直接将在并发情况下可能出问题的代码加同步,同一时刻只允许一个线程访问,典型的代表是synchronized 乐观锁:每次不加锁去执行某项操作,如果发生冲突则失败并重试,直到成功为止,也称之为【自旋】原创 2017-07-15 10:55:25 · 503 阅读 · 0 评论 -
java multithread之join
Join:等待该线程执行完再继续(Waits for this thread to die)public class TestJoin { public static void main(String[] args) { CustomThread t1 = new CustomThread("t1"); CustomThread t2 = new CustomThread("t原创 2017-06-13 22:47:05 · 409 阅读 · 0 评论 -
生产者和消费者三种实现
1、syncronized+wait+notifypackage com.rrfare.producerconsumer;import java.util.LinkedList;import java.util.Queue;import java.util.Random;public class OrderManager { // 容器最大值 private static fina原创 2017-07-11 22:22:59 · 2143 阅读 · 0 评论 -
Java多线程synchronized几种方式
1、synchronized三种类型:synchronized instance method、synchronized block 及 synchronized static method2、代码测试:两个不同线程访问同一个类同一个方法,查看输出结果,目标是不希望出现交叉访问(1)不加synchronizedpublic class NoSyncronize { publi原创 2017-06-15 11:22:04 · 470 阅读 · 0 评论 -
Java模拟排查线程死锁问题
一、模拟死锁public class App { public static void main( String[] args ) { Object object1 = new Object(); Object object2 = new Object(); System.out.println("main thread st原创 2017-11-03 11:31:46 · 675 阅读 · 0 评论