java线程相关试题实例源码代码。

/**

* 计算输出其他线程锁计算的数据

*/

class ThreadA {

public static void main(String[] args) {

ThreadB b = new ThreadB();

//启动计算线程

b.start();

//线程A拥有b对象上的锁。线程为了调用wait()或notify()方法,该线程必须是那个对象锁的拥有者

synchronized (b) {

try {

System.out.println(“等待对象b完成计算。。。”);

//当前线程A等待

b.wait(); //这里并不是让b去wait,是b的所有者线程wait,但是这个线程的苏醒的条件是b的notify或notifyAll方法的调用而且

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(“b对象计算的总和是:” + b.total);

}

}

}

/**

* 计算1+2+3 … +100的和

*

* @author leizhimin 2008-9-15 13:20:49

*/

class ThreadB extends Thread {

int total;

public void run() {

System.out.println(“xxxxxxxxxxxxxxxxxrrrrrrrrrrrrrrrrrrrrrx”);

synchronized (this) {

System.out.println(“xxxxxxxxxxxxxxxxxx”);

for (int i = 0; i < 101; i++) {

total += i;

}

//(完成计算了)唤醒在此对象监视器上等待的单个线程,在本例中线程A被唤醒

notify();

}

}

}

notify():

(唤醒)

(在此对象监视器上)

(等待的)

(单个)

(线程)。

A a = new A();

a.notify();

a是对象监视器

notify()是类A的成员方法

因此wait、notify、notifyAll都属于同一个对象监视器

解决死等问题的途径:

通过某一条件来判断对象监视器是否以及执行了notifyAll()

1)如果已执行,则避免自己被监视器wait()

2)如果没执行,则可以放心大胆的去被wait(),因为迟早都会被notifyAll()

java线程实例题_java线程相关试题实例源码代码相关推荐

  1. 计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw ...

  2. java获取当前周一_Java互联网架构-Spring IOC源码分析

    欢迎关注头条号:java小马哥 周一至周日下午三点半!精品技术文章准时送上!!! 精品学习资料获取通道,参见文末 源码介绍之前,看几个问题: Bean的承载对象是什么? Bean的定义如何存储的? B ...

  3. java制作电子钢琴_java 设计 模拟钢琴 完整源码

    //Piano.java import java.applet.*; import java.awt.*; import java.awt.event.*; public Piano extends ...

  4. java 实验室预约系统_java实验室预约管理系统(源码+数据库脚本)

    随着高校教学资源逐步开发,高校教育资源的应用种类逐步增多.而实验室作为高校基本教育资源之一,与日常教学工作开展.课堂项目实践有着密切联系.由此,如何借助新时期技术,加强高校实验室应用数据信息程序开发, ...

  5. java 微服务源码_java 微服务 入门级实例源码(基于SpringCloud)

    [实例简介] 实例中包含三个项目 eurekaServer(服务注册中心),provicer_demo(微服务提供者),caller_demo(微服务调用者),并对 服务器直接返回与调用微服务的性能 ...

  6. java实现PDF转图片功能,附实例源码!

    本文整理了一个PDF转图片的工具类,支持单页及多页的转换! 首先需要引入相关的jar包 <dependency><!--PDF操作工具包--><groupId>or ...

  7. 【Java】SpringBoot使用caffeine构建缓存带实例源码

    目录 一.什么是caffeine 二.SpringBoot整合caffeine 1. SpringBoot项目基础运行 2. 基于maven安装caffeine 3. 缓存注解说明 4. 实际代码 1 ...

  8. latch.await java有什么作用_java相关:CountDownLatch源码解析之await()

    java相关:CountDownLatch源码解析之await() 发布于 2020-6-18| 复制链接 摘记: CountDownLatch 源码解析-- await(),具体内容如下上一篇文章说 ...

  9. Java Review - 线程池资源一直不被释放案例源码分析

    文章目录 概述 问题复现 源码分析 小结 概述 在日常开发中为了便于线程的有效复用,经常会用到线程池,然而使用完线程池后如果不调用shutdown关闭线程池,则会导致线程池资源一直不被释放. 下面通过 ...

最新文章

  1. 生态伙伴 | 股书入驻飞书,提供一站式股权激励方案设计及管理服务
  2. 双人五子棋对战(需要EasyX图像库)
  3. 考研学弟问的n个问题,梳理一下分享给大家
  4. 牛客练习赛24题解(搜索,DP)
  5. Centos7 中文乱码切换中英字符
  6. SAP Spartacus OccEndpointsService调用getBaseEndpoint的一些场景
  7. 从Qt4 迁移到Qt5 winEvent代替为nativeEvent
  8. 网页设计工资一般多少_初级会计师就业前景怎么样?工资一般多少?
  9. 64位 iee754_IEEE754浮点表示法详解
  10. epoll, NIO,AIO
  11. 【Java】数据库编程
  12. 数据结构之单链表的整表创建头插法
  13. 查询字符串(性能对比): Array Vs HashMap
  14. 五笔字根表识别码图_86版五笔字根表及口诀(最新图文版)
  15. jQuery京东分类导航菜单
  16. 【python实战】制作微信动态名片
  17. Windows中的SysWow64文件夹
  18. MMD导入unity中使用
  19. HTML Purifier
  20. 控制台模拟鼠标、键盘操作

热门文章

  1. UITableView 显示在statusbar 下面
  2. 人的价值不在于能力,而在于位置 » 社区 | Ruby China
  3. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(4月2日-4月8日)
  4. MVC命名空间中的~UrlHelper中的Action方法告诉我们方法重载的重要性(路由的统一)...
  5. php.ini 配置详解
  6. Struts国际化步骤
  7. JavaWeb学习总结(五十)——文件上传和下载
  8. Asp.net中利用ExecuteNonQuery()执行存储过程返回-1解决方案
  9. sql server 2008学习8 sql server存储和索引结构
  10. NHibernate错误集锦及配置技巧