java多线程信息共享 & 多线程管理

  • 信息共享
  • 多线程管理

信息共享

继承Thread的类通过static共享变量;
实现Runnable接口的类私有变量即可。

对于信息共享数据不一致的问题:
1.副本变量用volatile关键字修饰;保证不同线程共享变量操作的可见性。
2. 关键步骤加锁限制:
互斥:某一线程运行时候,其他线程不可运行,采用:synchronized修饰。
同步:各个线程按照一定的先后顺序执行。

多线程管理

其中关于线程间的阻塞/唤醒方法:

  1. sleep()
  2. wait(), notify(), notifyAll().
  3. join():等待另一个线程结束
  4. interrupt(), 向另一个程序发送中断信号,该程序收到中断信号后,会触发InterruptedException,可进行下一步。

例子1:
定义两个线程类,均继承Thread类。
TestThread11:采用interrupt()方法进行中断程序;
TestThread22:采用标志flag来停止该线程。且flag采用volatile修饰,是安全的多个线程共享变量。

package multiThread;
public class InterruptedThread {public static void main(String[] args) throws InterruptedException {TestThread11 t1 = new TestThread11();TestThread22 t2 = new TestThread22();t1.start();t2.start();Thread.sleep(2000);t1.interrupt();t2.flag = false;System.out.println("main Thread is exiting!");}}class TestThread11 extends Thread{public void run() {while(!interrupted()) {System.out.println("Thread1 is running!");try {Thread.sleep(1000);}catch(InterruptedException e) {e.printStackTrace();break;}}System.out.println("Thread1 is exiting!");}
}class TestThread22 extends Thread{public volatile boolean flag = true;public void run() {while(flag) {System.out.println("Thread2 is  running!");try {Thread.sleep(1000);}catch(InterruptedException e) {e.printStackTrace();}}System.out.println("Thread2 is exiting!");}
}

例2:
为了实现线程之间的同步,采用synchronized修饰关键字段,二者分别要依次获取变量r1,r2才可以执行。就如同哲学家吃面的问题。

package multiThread;import java.util.concurrent.TimeUnit;public class TestDemo5 {public static Integer r1 = 1;public static Integer r2 = 2;public static void main(String[] args) {Demo1 t1 = new Demo1();Demo2 t2 = new Demo2();t1.start();t2.start();}
}class Demo1 extends Thread{public void run() {synchronized(TestDemo5.r1){try {TimeUnit.SECONDS.sleep(2);}catch(InterruptedException e){e.printStackTrace();}synchronized(TestDemo5.r2) {System.out.println("Thread1 is exiting!");}}}
}class Demo2 extends Thread{public void run() {synchronized(TestDemo5.r1) {try {TimeUnit.SECONDS.sleep(2);}catch(InterruptedException e) {e.printStackTrace();}synchronized(TestDemo5.r2) {System.out.println("Thread2 is exiting!");}}}
}

java多线程信息共享 多线程管理相关推荐

  1. 基于JAVA考研信息共享平台的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA考研信息共享平台的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA考研信息共享平台的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署 ...

  2. java多线程共享信息_java多线程信息共享

    上篇文章知识介绍了多线程的创建和启动问题,各个子线程和子线程或者说子线程和main线程没有信息的交流,这篇文章主要探讨线程之间信息共享以及交换问题.这篇文章主要以一个卖票例子来展开. 继承Thread ...

  3. 基于JAVA学生管理部门信息共享交流系统计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA学生管理部门信息共享交流系统计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA学生管理部门信息共享交流系统计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目 ...

  4. 一篇博客带你轻松应对java面试中的多线程与高并发

    1. Java线程的创建方式 (1)继承thread类 thread类本质是实现了runnable接口的一个实例,代表线程的一个实例.启动线程的方式start方法.start是一个本地方法,执行后,执 ...

  5. 并发基础篇(一): Java 并发性和多线程

    说在前面 介绍文章之前,先给出一个多线程的思维导图, 后续的文章就根据思维导图来一步一步的分析java多线程的知识. 一.介绍 在过去单 CPU 时代,单任务在一个时间点只能执行单一程序.之后发展到多 ...

  6. Java 并发编程解析 | 如何正确理解Java领域中的多线程模型,主要用来解决什么问题?

    苍穹之边,浩瀚之挚,眰恦之美: 悟心悟性,善始善终,惟善惟道! -- 朝槿<朝槿兮年说> 写在开头 我国宋代禅宗大师青原行思在<三重境界>中有这样一句话:" 参禅之初 ...

  7. 明翰Java教学系列之多线程篇V0.2(持续更新)

    文章目录 传送门 前言 背景知识 并行与并发 线程与进程 内存模型 1. 计算机内存模型 `2. Java内存模型` 2.1 内存交互 2.1.1 交互操作 2.1.2 交互规则 `2.2 并发编程特 ...

  8. Java高级特性增强-多线程

    请戳GitHub原文: https://github.com/wangzhiwub... 大数据成神之路系列: 请戳GitHub原文: https://github.com/wangzhiwub... ...

  9. Java基础篇:多线程

    文章目录 1.概念:程序.进程.线程 2.线程的创建和使用 3.线程的生命周期 4.线程的同步 5.线程的通信 6.JDK5.0新增线程创建方法 1.概念:程序.进程.线程 程序(program)是为 ...

最新文章

  1. android 访问http地址吗,浅谈android访问http原理
  2. python全栈开发,Day40(进程间通信(队列和管道),进程间的数据共享Manager,进程池Pool)...
  3. GO语言使用的几个注意点
  4. tree树的展示,check树的展示,json数据转zree树格式数据
  5. 文本框不可编辑,只可使用帮助的解…
  6. 天池 在线编程 求和查找
  7. 【LeetCode笔记】剑指Offer 59. I 滑动窗口的最大值(Java、单调队列)
  8. P4行为模型BMV2依赖关系安装:thrift nanomsg nnpy安装
  9. Mybatis 二级缓存简单示例
  10. python时间序列模型有哪些_时间序列模型(ARIMA)
  11. cocostudio中的一些控件的使用
  12. 发那科机器人tp文件转成文本_fanuc_机器人中文简易教材.pdf
  13. ENVI监督分类中SVM(支持向量机)工具
  14. STM8 低功耗设计
  15. 理解ZBrush中的笔触
  16. 0基础学RS(三)路由器基本配置
  17. 入手佳能24-70mm f/2.8L
  18. python爬取电影天堂
  19. 多个USB转串口设备区分方法
  20. win10备份为wim_Win10 也能玩转一键还原

热门文章

  1. vue 如何计算list的长度_航母的水线长度到底如何计算?
  2. Tomcat主页404错误
  3. [SQL] 常用查询脚本
  4. 开发工具IDEA的使用
  5. 仿淘宝分页按钮效果简单美观易使用的JS分页控件
  6. 个人收藏的flex特效网址【经典中的极品】
  7. 谷歌眼镜Mirror app开发之简单新闻浏览页面
  8. CLR: 那些你不知道你不知道的事情 程序集(Assembly)和模块(Managed Module)
  9. 大话数据结构第四章栈的应用
  10. 输入一个数,判断这个数的二进制有几个0,几个1(完整代码)