
多线程
Kent Chiang
这个作者很懒,什么都没留下…
展开
-
关于Thread.join()方法的理解
一、用法:main方法中调用其他线程的join方法public static void main(String[] args) {...Thread t1 = new Thread(runnable);t1.start();t1.join();...}二、源码解读:public final synchronized void join(long millis)throws InterruptedException {...if (millis == 0原创 2021-12-29 15:36:05 · 335 阅读 · 0 评论 -
实现两个线程交替执行
比如线程1输出0,线程2输出0,线程1输出1,线程2输出1。既然有先后顺序,优先想到和顺序有关的锁,ReenTrantLock的公平锁,等待时间最长的线程优先获取锁。代码如下:public class AlternateDemo { public static void main(String[] args) { Task task = new Task(); Thread ta = new Thread(task); Thread tb...原创 2021-02-05 22:28:21 · 641 阅读 · 0 评论 -
Java线程间通信的同步问题、wait/notify使用
Java线程间通信简单来说就是多个线程同时操作同一个资源,比如一个线程设置了姓名、性别,另一个线程读取姓名、性别。伴随而来的就是同步问题:比如线程a先设置了张三、男,后设置了李四、女,线程b要打印这些信息,由于多线程的随机性,a设置张三、男后,然后a又设置了李四,还未设置性别时,b这时候读取数据,独到的就是李四、男,这样结果就不对了。解决方法就是加锁,保证a在赋值时,b没有读取;b读取时,a没原创 2017-12-09 17:25:03 · 328 阅读 · 0 评论 -
线程知多少(一)线程实现数据共享的方式
一、继承Thread1、使用static关键字,使被共享的数据变为类变量,这样即使创建多个Thread对象,也可以使多个Thread对象共用类变量package demo.threadtest;public class TicketsThread extends Thread {private static int tickets = 500;public void ru...原创 2019-04-07 17:08:00 · 422 阅读 · 1 评论 -
彻底理解ThreadLocal
彻底理解ThreadLocal参考:http://www.iteye.com/topic/103804http://www.iteye.com/topic/777716源码分析 为了解释ThreadLocal类的工作原理,必须同时介绍与其工作甚密的其他几个类ThreadLocalMap(内部类) Thread 首先,在Thread类中有一行: /...转载 2019-05-15 19:10:50 · 227 阅读 · 0 评论