并发编程(多线程)
一共53篇文章
专题:第4期
-
怎么让3个线程按顺序执行
参考答案 1. 让线程按顺序运行的方法 涉及到多线程中许多常用的方法,总结如下: 使用线程的join方法 使用主线程的join方法 使用线程的wait方法 使用线程的线程池方法 使用线程的Condition(条件变量)方法 使用线程的CountDownLatch(倒计数)方法 使用线程的CyclicBarrier(回环栅栏)方法 使用线程的Semaphore(信号量)方法 2. 让线程按顺序…...- 宝妹儿
- 27
- 0
-
启动一个线程是用start还是run方法
参考答案 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态。这意味着它可以由JVM调度并执行,但并不意味着线程就会立即运行。 run()方法可以产生必须退出的标志来停止一个线程。 一、run方法运行结果 run()方法只是类的一个普通方法,如果直接调用run()方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完…...- 宝妹儿
- 16
- 0
-
线程中断与stop的区别
参考答案 线程中断与stop的区别: public final void stop(): 让线程停止,方法过失了,但还可以用。 public void interrupt(): 中断线程,并抛出InterruptedException,程序正常结束。 线程中断与stop的实例: public class ThreadSleepDemp { public static void main(Strin…...- 宝妹儿
- 13
- 0
-
如何保证多个线程同时启动
参考答案 保证多个线程同时启动,可以 wait()、notify() 实现,也可以使用发令枪 CountDownLatch 实现。 CountDownLatch 实现较简单,实例: public class TestCountDownLatch { private static CountDownLatch cld = new CountDownLatch(10); public static v…...- 宝妹儿
- 11
- 0
-
线程包括哪些状态,状态之间是如何变化的
参考答案 一、线程的生命周期 线程包括哪些状态的问题说专业一点就是线程的生命周期。 不同的编程语言对线程的生命周期封装是不同的。 二、Java 中线程的生命周期 Java 语言中线程共有六种状态。 NEW(初始化状态) RUNNABLE(可运行 / 运行状态) BLOCKED(阻塞状态) WAITING(无限时等待) TIMED_WAITING(有限时等待) TERMINATED(终止状态) 在操…...- 宝妹儿
- 57
- 0
-
线程的优先级有什么用
参考答案 线程的优先级: Java中线程优先级是一个int变量(从1-10),1代表最低优先级,10代表最高优先级。 Java中的线程优先级具有继承的特性。例如,线程1启动线程2,那么线程2的优先级就和线程1的优先级是一样的。 设置线程优先级,有助于帮助线程规划器确定下一次选中哪一个线程优先执行。 优先级高的线程得到的CPU资源比较多,也就是CPU优先执行优先级高的线程对象中的任务。 线程的优先级…...- 宝妹儿
- 95
- 0
-
Java程序中怎么保证多线程的运行安全
参考答案 线程的安全性问题如下: 原子性:一个或者多个操作在 CPU 执行的过程中不被中断的特性; 可见性:一个线程对共享变量的修改,另外一个线程能够立刻看到; 有序性:程序执行的顺序按照代码的先后顺序执行。 导致线程的安全性问题的原因: 缓存导致的可见性问题; 线程切换带来的原子性问题; 编译优化带来的有序性问题。 多线程运行安全的解决办法: JDK Atomic开头的原子类、synchroni…...- 宝妹儿
- 65
- 0
-
如何创建、启动 Java 线程
参考答案 Java 中创建线程的4种常见方式: 一、重写 Thread 类的 run() 方法 有两种表现形式: 1. new Thread 对象匿名重写 run() 方法 public class TestNewThread { public static void main(String[] args) { //创建线程 t, 重写 run() 方法 new Thread("t&…...- 宝妹儿
- 47
- 0
-
阿里为什么不让用Executors创建线程池
参考答案 阿里巴巴开发手册并发编程中的一条规则:线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式。 1. 主要原因 FixedThreadPool和SingleThreadExecutor => 允许的请求队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而引起OOM异常。 CachedThreadPool => 允许创建…...- 宝妹儿
- 45
- 0