- 浏览: 428857 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (170)
- java (77)
- javascript (5)
- jsp (1)
- servlet (6)
- struts (8)
- hibernate (3)
- spring (4)
- ajax (5)
- jquery (3)
- apache cxf (0)
- ext.js (1)
- hadoop (0)
- android (0)
- html5 (2)
- linux (5)
- flex (1)
- tomcat (1)
- jboss (0)
- nginx (0)
- mysql (16)
- sql server (3)
- oracle (4)
- div+css (0)
- mybatis (4)
- design patterns (22)
- xml (2)
- postgresql (3)
- velocity (1)
- freemarker (1)
- kendo-ui (2)
- ibatis (1)
- socket (1)
- C and C++ (1)
- C# (2)
- 程序设计----算法 (0)
- jersey (1)
- dd (0)
- perl (1)
- shell (0)
最新评论
-
书策稠浊:
兄弟,这tm是Java?
java调用百度地图和谷歌地图 -
fengyunlouyanyu:
jquery----删除指定id的div下的img -
yangjianzhouctgu:
Neoman 写道hi,我看你引入了kendo.web.min ...
kendo-ui中kendoGrid的用法 -
Neoman:
hi,我看你引入了kendo.web.min.js 这个js, ...
kendo-ui中kendoGrid的用法 -
yangjianzhouctgu:
llscp 写道这是JS吧...对的呀
java调用百度地图和谷歌地图
线程同步:两个线程依次对同一变量进行操作。
运行结果:
package com.thread.waitNotify; /** * 线程一对变量加1,线程二对该变量减1,如此循环下去 * * @author yangjianzhou * @description TODO * @time Nov 6, 2014 : 9:39:53 PM */ public class ThreadTest1 { public static void main(String[] args) { final AssistClass assist = new AssistClass(); new Thread(new Runnable() { @Override public void run() { while (true) { assist.plus(); } } }).start(); new Thread(new Runnable() { @Override public void run() { while (true) { assist.minus(); } } }).start(); } } class AssistClass { boolean runPlus = true; private int amount; /** * execute ++amount ,then print the field */ public synchronized void plus() { if (!runPlus) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("plus method : amount = " + (++amount)); runPlus = false; this.notify(); } /** * execute --amount ,then print the field */ public synchronized void minus() { if (runPlus) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("minus method : amount = " + (--amount)); runPlus = true; this.notify(); } }
运行结果:
plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0 plus method : amount = 1 minus method : amount = 0
发表评论
-
spring boot应用测试框架介绍
2018-07-19 14:44 753个人原创博客:spring boot应用测试框架介绍 -
可执行jar包的配置与运行
2017-06-04 19:42 1008spring boot项目可以以jar包的形式执行运行。s ... -
多线程并发
2016-05-21 23:49 0Splitter.on('|').trimResults(). ... -
jdk动态代理实现原理
2016-05-09 23:12 775jdk的动态代理即使用反射来实现,具体由Proxy、Invoc ... -
spring常见注解
2016-05-01 23:33 12321.Autowired 通过spring的依赖注入功能来 ... -
spring常见配置作用
2016-04-29 23:08 936一般应用中常见spring的 ... -
数据来自两个系统时的内存分页算法
2016-04-24 23:12 844业务数据来自a-app与b-app,其中a-app中数据的业务 ... -
linux下java web开发环境搭建
2016-04-10 14:09 1134一般的java web开发涉及到的开发工具有:jdk、tomc ... -
linux下md5sum和DigestUtils.md5Hex的关系
2015-12-19 22:30 8526本文对linux下md5sum命令和java中DigestUt ... -
基于jersey的web service
2015-11-22 22:55 1010本文是基于jersey的web service 的两个小例子, ... -
面试总结----spring
2015-05-19 22:17 912spring在面试中经常被 ... -
面试总结----多线程
2015-05-18 22:10 900面试过程中,多线程被问到的概率非常大,差不多都会问的。 下面 ... -
面试总结----java虚拟机
2015-05-17 23:20 741在面试过程中,java虚拟机被问到的概率非常大,应该是每场面试 ... -
面试总结----java集合
2015-05-17 11:57 677春节刚过,打算换一份工作,于是就开始了一段准备面试的生活,准备 ... -
json串与对象之间转换的几种实现方式
2015-01-24 18:56 1878这里使用了gson,fastjson,jackson,json ... -
google关于事件的生产者消费者模式实现例子
2015-01-24 11:28 977google使用生产者/消费者模式实现了事件的产生传播处理过程 ... -
图形化显示---冒泡排序
2014-12-05 22:17 917代码: package com.thread.singal ... -
多线程-----阻塞队列
2014-11-05 22:43 851使用一个线程将一个指定目录下面的所有文件放在一个阻塞队列中,用 ... -
迷宫的最短路径
2014-08-19 00:31 3764代码如下: package com.chapterO ... -
深度优先遍历------部分和问题
2014-08-15 20:15 518代码如下: package com.chapterO ...
相关推荐
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
总结一下,`wait()`, `notify()`, 和 `notifyAll()` 是Java多线程编程中的核心工具,它们与`synchronized`关键字一起,为线程间的协作提供了强大的支持。理解并熟练掌握这些概念,对于编写高效、安全的多线程程序至...
总结来说,Java的 `wait()` 和 `notify()` 提供了一种在多线程环境中控制线程执行的机制。通过合理使用这些方法,我们可以实现线程间的协作,精确控制子线程的运行状态。然而,这种方式虽然灵活,但管理起来相对复杂...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在探索多线程和设计模式的同时,还要关注线程间的通信(如使用`wait()`、`notify()`、`notifyAll()`等)、同步机制(如`synchronized`关键字、`Lock`接口等)、线程池的使用(`ExecutorService`、`...
在Java编程中,多线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而提高了系统的效率和响应性。然而,在某些场景下,我们可能需要控制线程的执行顺序,确保它们按照特定的顺序交替运行,这在并发编程...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
### Java多线程知识点总结及企业真题解析 #### 一、知识点总结 ##### (1)多线程相关概念 1. **程序、进程和线程的区分**: - **程序**:为了完成特定的任务而编写的指令集合。它是静态的概念。 - **进程**:...
3. 多线程等待相同信号:如果有多个线程等待同一个对象,`notify()`只能唤醒一个,因此需要设计合适的同步机制确保所有等待的线程都能得到通知。 总的来说,Java的线程通信机制为多线程环境下的协作提供了基础。...
### Java多线程—线程间的通信 #### 一、线程间的通信 ##### (1)为什么要处理线程间的通信? 在多线程环境中,不同的线程可能需要协同工作来完成一项任务。例如,一个线程负责生产数据,另一个线程负责消费这些...
在Java多线程编程中,线程间的通信是非常重要的概念,用于协调多个并发执行的任务。线程的状态转换是理解线程通信的基础,主要包括四个状态:新(New)、可执行(Runnable)、死亡(Dead)和停滞(Blocked)。新状态...
- 同步机制:学习synchronized关键字、wait/notify机制,以及Lock接口(如ReentrantLock)用于控制并发访问,防止数据不一致性。 - 线程池:使用ExecutorService和ThreadPoolExecutor创建线程池,以提高系统性能并...
源码—Java多线程5—死锁和wait notify notifyAll
### Java多线程-生产者与消费者问题 #### 一、生产者与消费者问题概览 **1.1 概要** 生产者与消费者问题是计算机科学中一个多线程同步的经典问题。它描述了两个线程如何共享有限资源的场景:一个是生产者...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
- **线程通信**:使用wait()、notify()和notifyAll()方法,或者条件变量(Condition)来协调线程间的执行顺序。 - **线程池**:ExecutorService和ThreadPoolExecutor提供线程池管理,减少线程创建和销毁的开销,...
_java多线程wait、notify机制详解_ 在Java多线程编程中,wait和notify是两个非常重要的机制,用于实现线程之间的通信和同步。在本文中,我们将通过示例代码详细介绍Java多线程wait和notify的使用,帮助读者更好地...
此外,`wait()`和`notify()`(或`notifyAll()`)方法用于线程间的通信,让线程在等待资源时释放CPU,并在资源可用时唤醒。Java还提供了`ReentrantLock`可重入锁,它具有更高的灵活性,可以实现更复杂的同步策略。`...
在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应性。本节我们将深入探讨Java中的多线程概念,包括其重要性、创建方法以及相关机制。 一、多线程的重要性 1....
"多线程编程基础知识点总结" 多线程编程是指在一个程序中同时执行多个线程,以提高程序的执行效率和响应速度。在C++中,多线程编程是通过使用std::thread类来实现的。下面是多线程编程的基础知识点总结: 一、线程...