阅读《Java多线程编程核心技术》线程间通信时遇到的一个问题,求解
阅读《Java多线程编程核心技术》线程间通信时遇到的一个问题,求解
=============================
=============================
=============================
---------------------------------------------------------------------------------------------------------
上面代码运行结果:
a run
添加了1个元素
b run
添加了2个元素
添加了3个元素
添加了4个元素
添加了5个元素
添加了6个元素
添加了7个元素
添加了8个元素
添加了9个元素
添加了10个元素
-----------------------------------------------------------------------------------------------------------
想问下,为什么b线程中设置抛异常的语句没有执行?
package com.qf.test01;
import java.util.ArrayList;
import java.util.List;
/**
* @author qf
* @create 2018-09-13 17:47
*/
public class MyList {
private List list = new ArrayList();
public void add(){
list.add("qf");
}
public int size(){
//System.out.println("MyList.size:"+list.size());
return list.size();
}
}
}=============================
package com.qf.test01;
/**
* @author qf
* @create 2018-09-13 17:45
*/
public class ThreadA extends Thread {
private MyList myList;
public ThreadA(MyList myList) {
this.myList = myList;
}
@Override
public void run() {
try {
System.out.println("a run");
for (int i = 0; i < 10; i++) {
myList.add();
System.out.println("添加了"+(i+1)+"个元素");
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
=============================
package com.qf.test01;
/**
* @author qf
* @create 2018-09-13 17:45
*/
public class ThreadB extends Thread {
private MyList myList;
public ThreadB(MyList myList) {
this.myList = myList;
}
@Override
public void run() {
try {
System.out.println("b run");
while (true){
if(myList.size() == 5){
System.out.println("线程b要退出了");
throw new InterruptedException();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
=============================
package com.qf.test01;
/**
* @author qf
* @create 2018-09-14 9:23
*/
public class Test {
public static void main(String[] args) {
MyList list = new MyList();
ThreadA a = new ThreadA(list);
a.setName("a");
a.start();
ThreadB b = new ThreadB(list);
b.setName("b");
b.start();
}
}
---------------------------------------------------------------------------------------------------------
上面代码运行结果:
a run
添加了1个元素
b run
添加了2个元素
添加了3个元素
添加了4个元素
添加了5个元素
添加了6个元素
添加了7个元素
添加了8个元素
添加了9个元素
添加了10个元素
-----------------------------------------------------------------------------------------------------------
想问下,为什么b线程中设置抛异常的语句没有执行?
...全文
相关推荐
深入理解JAVA多线程之线程间的通信方式
在Java多线程编程中,线程间的通信是至关重要的,因为它确保了多个并发执行的任务能够协调工作,避免数据不一致性和死锁等问题。本文将深入探讨两种主要的线程间通信方式:同步机制和基于轮询的方式。1.
Java线程间的通信方式详解
Java线程间的通信是多线程编程中的重要概念,它涉及到如何协调多个并发执行的线程,确保数据的一致性和正确性。本文将详细介绍两种常见的Java线程通信方式:同步和while轮询。1.
java多线程编程学习(线程间通信)
Java 多线程编程学习(线程间通信)Java 多线程编程是指在 Java 中使用多个线程来执行不同的任务,以提高程序的执行效率和响应速度。
Java编程之多线程死锁与线程间通信简单实现代码
但是,多线程编程也存在一些隐患,其中最常见的就是死锁和线程间通信的问题。下面我们就来详细介绍Java编程之多线程死锁与线程间通信简单实现代码。
Java多线程编程线程间通信详解.docx
Java多线程编程中的线程间通信是解决并发问题的关键技术之一。在多线程环境中,线程间的协作和同步往往需要依赖于等待与通知机制,以确保在正确的时间执行正确的操作,避免资源的竞争和死锁。


Java SE
