本文实践来自于【Java多线程编程核心技术】一书!

同步方法容易造成死循环,如——

类Service.java:

package service;

public class Service {

synchronized public void methodA(){

System.out.println("methodA begin");

boolean isContinueRun = true;

while(isContinueRun){

}

System.out.println("methodA end");

}

synchronized public void methodB() {

System.out.println("methodB begin");

System.out.println("methodB end");

}

}

线程类代码如:

package extthread;

import service.Service;

public class ThreadA extends Thread {

private Service service;

public ThreadA(Service service) {

super();

this.service = service;

}

@Override

public void run() {

// TODO Auto-generated method stub

service.methodA();

}

}

package extthread;

import service.Service;

public class ThreadB extends Thread{

private Service service;

public ThreadB(Service service) {

super();

this.service = service;

}

/* (non-Javadoc)

* @see java.lang.Thread#run()

*/

@Override

public void run() {

// TODO Auto-generated method stub

service.methodB();

}

}

运行类:

package test.run;

import service.Service;

import extthread.ThreadA;

import extthread.ThreadB;

public class Run {

public static void main(String[] args) {

Service service = new Service();

ThreadA athread = new ThreadA(service);

athread.start();

ThreadB bthread = new ThreadB(service);

bthread.start();

}

}

相关死循环分析——

线程B永远得不到执行机会,被锁死了!

screenshot_20160525155141.png

java多线程编程同步方法_实践【Java多线程编程核心技术】系列:同步方法造成的无限等待...相关推荐

  1. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  2. java多线程与并发_漫画 | Java多线程与并发(一)

    1.什么是线程? 2.线程和进程有什么区别? 3.如何在Java中实现线程? 4.Java关键字volatile与synchronized作用与区别? volatile修饰的变量不保留拷贝,直接访问主 ...

  3. java死锁业务场景_【深入浅出多线程系列十二】:什么是死锁?(场景+代码示例)...

    在学习Java的道路上,是否路过多线程时总让你很迷惘:很不巧,我也是,而使我们感到很迷惘主要原因都源于没有对概念的深深的理解和实践.所以我决定漫步Java多线程,同你一起会会多线程. 多线程系列 多线 ...

  4. java多线程交替打印_使用Java实现三个线程交替打印0-74

    使用Java实现三个线程交替打印0-74 题目分析 三个线程交替打印,即3个线程是按顺序执行的.一个线程执行完之后,唤醒下一个线程,然后阻塞,等待被该线程的上一个线程唤醒.执行的顺序是一个环装的队列 ...

  5. java 函数式编程 示例_功能Java示例 第1部分–从命令式到声明式

    java 函数式编程 示例 功能编程(FP)的目的是避免重新分配变量,避免可变的数据结构,避免状态并全程支持函数. 如果将功能性技术应用于日常Java代码,我们可以从FP中学到什么? 在这个名为&qu ...

  6. java换成中文_如果我们的编程替换成中文会变成怎样?

    首先大概的看一下中文编码: 你以为会写中文就会编程吗?这就像你以为会写汉字就会写出好文章一样.编程是和机器沟通,因此要用机器的语言而不是人类的语言.最早的程序就是0和1的数字,不是中文也不是英文.以前 ...

  7. java 同步的方法_关于Java中的同步方法

    我有一个关于Java中方法同步的问题. 考虑一个具有3个同步方法的类. class MyClass{ public synchronized void methodA(){ ... } public ...

  8. Java并发编程实战_福州java编程实战培训班排名

    如何选择福州java培训中心? 在福州,如果想迅速掌握java开发,参加福州java培训班无疑是一种非常有效的方式.但是,市场上有这么多的java培训机构,我们在选择的时候难免会眼花缭乱.福州java ...

  9. java 安卓客户端开发_《安卓网络编程》之第一篇 java环境下模拟客户端、服务器端...

    1.Socket简介 在网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接.Socket是TCP/IP协议的一个 ...

  10. java计分系统编程代码_使用Java代码对实时系统进行编程

    由于许多重要原因,Java语言在实时系统中的使用并不广泛. 这些包括Java语言设计固有的不确定性性能影响,例如动态类加载,以及Java Runtime Environment(JRE)本身,例如垃圾 ...

最新文章

  1. python实现全角和半角互相转换
  2. python解决四舍五入问题
  3. Hadoop日记Day7---HDFS的WED端口
  4. C语言-一维数组与指针
  5. Tomcat performance optimization through consolidated log file handlers
  6. 中国石蜡行业供需情况与投资战略规划研究报告2022-2028年版
  7. 理解伪元素 :before 和 :after
  8. 基于贝叶斯决策理论的分类器
  9. 抖音ai智能机器人挂机_电销秘诀 电销企业难以拒绝的AI智能电销机器人
  10. 金融行业的BI应用分析
  11. 远程办公的 33 种预测
  12. Bailian2695 最大商【最值】
  13. python学习手册-Python学习手册
  14. C++--第16课 - 继承中的构造与析构
  15. 编写一个python程序输出如下图形_第二章:Python程序实例解析
  16. 老男孩python全栈视频教程_老男孩Python全栈7期,Flask全套组件及原理剖析视频教程下载...
  17. jax指标的用法_济安线预警指标?JAX指标?
  18. MAC表、ARP缓存表、路由表以及端口映射NAT
  19. 基于GoogleMap,Mapabc,51ditu基于GoogleMap,Mapabc,51ditu,VirtualEarth,YahooMap Api接口的Jquery插件的通用实现(含源代码下载)
  20. csdn博客更换皮肤

热门文章

  1. html编写个人博客_第 06 篇:博客从“裸奔”到“有皮肤”
  2. 去除0值和nan_Pandas 1.0的新功能
  3. 离个职居然还用上了叫号机,差点以为在医院...
  4. 在研究所工作是什么体验?和互联网公司比,你会怎么选?
  5. 收藏吧!产品再要求实现这个功能,就把这篇转给他!
  6. 皮一皮:确定不是备胎???
  7. html代码复制到asp中不一样了_迷你代码编程在线成语词典
  8. 苹果计算机错误怎么改,Mac电脑未能修改分区图,因为文件系统验证失败怎么办?...
  9. 帝国cms会员充值交易推广分润系统的界面实现与开发记录
  10. python 画pr曲线