- 浏览: 1275190 次
- 性别:
- 来自: 常州
文章分类
- 全部博客 (499)
- java (101)
- linux (82)
- mysql (30)
- javascript (45)
- Oracle (12)
- ext (14)
- 虚拟机 (1)
- 搜索引擎 (2)
- struts2 (11)
- 设计模式 (9)
- nginx (17)
- tomcat (12)
- 随想 (10)
- spring (18)
- svn (1)
- flash (3)
- UML (1)
- 数据结构 (7)
- 算法 (2)
- 网摘 (9)
- 数据库 (15)
- ibatis (3)
- jquery (31)
- lucene (1)
- hibernate (14)
- Myeclipse (4)
- 线程 (7)
- jbpm (4)
- 重构 (1)
- mantis (3)
- MediaWiki (4)
- ExtMail (1)
- MDaemon (1)
- egit (1)
- dwr (7)
- sitemesh (2)
- mybatis (1)
- ico (1)
- hadoop (5)
- jsoup (1)
- urlrewrite (2)
- jstl (1)
- spring3 (2)
- aop (2)
- 定时器 (1)
- Quartz (2)
- apache (1)
- php (1)
- security (1)
- iptables (2)
- QQ (1)
- mysqldump (1)
- vim (1)
- memcached (4)
- jad (1)
- 微博 (1)
- html5 (1)
- css3 (1)
- httpclient (10)
- google (1)
- shortUrl (1)
- json (2)
- virtualBox (1)
- mantisBT (2)
- htmlunit (1)
- selenium (2)
- mail (1)
- 正则表达式 (4)
- html (3)
- css (2)
- jatoolsPrinter (1)
- 图片处理 (1)
- hql (1)
- webservice (1)
- 分词 (3)
- 短信 (1)
- VPS (1)
- 事务 (1)
- 广告 (1)
- 画廊 (1)
- git (3)
- github (1)
- openshift (1)
- 缓存 (1)
- web (3)
- android (3)
- c3p0 (1)
- 邮箱 (1)
- memcache (2)
- windows (2)
- js (14)
- 编辑器 (1)
- 打印 (1)
- centos (5)
- boneCP (1)
- 连接池 (1)
- sql (1)
- nosql (1)
- MongoDB (1)
- 浏览器 (1)
- node (1)
- node.js (1)
- backbone.js (1)
- lazyload (1)
- Switch Off (1)
- Titanium (1)
- 网站架构 (1)
- WebDriver (1)
- APJP (1)
- 代理 (1)
- comet (1)
- kendoui (1)
- UI (2)
- 互联网 (1)
- localStorage (1)
- 记录 (1)
- 微信 (2)
- Sphinx (1)
- netty (1)
- js,mvvm,Avalon (1)
- 安卓 (1)
- Tengine (1)
- 大数据 (1)
- 手机 (1)
- paypal (1)
- SaaS (1)
- gitlab (1)
- nodejs (1)
- React (1)
- shadowsocks (0)
- vpn (0)
- 验证码 (1)
- SSL (2)
- SEO (1)
- IntelliJ (1)
- 敏捷开发 (1)
- 项目管理 (1)
- 爬虫 (1)
- 正则 (1)
- owncloud (1)
- 云存储 (1)
- ajax (1)
- pjax (1)
- jdk (1)
- zookeeper (1)
- phantomjs (1)
- ELK (1)
- springcloud (1)
- IDEA (1)
- hexo (1)
- ss (1)
- letencrypt (1)
最新评论
-
peakandyuri:
这个是有BUG的,数字小体现不出来,数字大了就不对了,但是Ja ...
java十进制转换N进制并反转换的工具类 -
ginolai:
然后是相关配置:/etc/sysconfig/iptables ...
Linux中iptables设置详细 -
bzhao:
我测试没啥区别啊!
Thread.sleep()和Thread.currentThread().sleep()区别 -
zhl549342097:
match == false
Spring Security 3.1 中功能强大的加密工具 PasswordEncoder -
hellotieye:
renzhengzhi 写道drager 写道用jsoup后解 ...
jsoup select 选择器
问题:设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1,运行1000次(可以每个各执行250次也可自己计算只要总合1000),J初始为100,保证结果为100,写出程序
PS:这里主要用到了synchronized以及对象的wait和notify以及notifyAll方法
package com.test; public class TestThread{ public static void main(String[] args) { Operate o = new Operate(); IncreaseThread thread1 = new IncreaseThread(o); IncreaseThread thread2 = new IncreaseThread(o); DecreaseThread thread3 = new DecreaseThread(o); DecreaseThread thread4 = new DecreaseThread(o); thread1.start(); thread2.start(); thread3.start(); thread4.start(); } } class Operate{ private int j=100; private int count = 0; public synchronized void increase(){ System.out.println("increase in"); while(100!=j){ try { System.out.println(Thread.currentThread().getName()+"increase begin wait"); wait(); System.out.println(Thread.currentThread().getName()+"increase end wait"); } catch (InterruptedException e) { e.printStackTrace(); } } j++; System.out.println("increase j:"+j); count++; System.out.println("increase count:"+count); //切勿使用notify();只唤醒一个线程是不行的,因为有两个相同功能的线程会导致这2个线程都wait然后再通知到另外2个相同功能的线程又会2个线程都wait最终可能全部4个线程全部wait notifyAll(); System.out.println("increase out"); } public synchronized void decrease(){ System.out.println("decrease in"); while(100==j){ try { System.out.println(Thread.currentThread().getName()+"decrease begin wait"); wait(); System.out.println(Thread.currentThread().getName()+"decrease end wait"); } catch (InterruptedException e) { e.printStackTrace(); } } j--; System.out.println("decrease j:"+j); count++; System.out.println("decrease count:"+count); //切勿使用notify();只唤醒一个线程是不行的,因为有两个相同功能的线程会导致这2个线程都wait然后再通知到另外2个相同功能的线程又会2个线程都wait最终可能全部4个线程全部wait notifyAll(); System.out.println("decrease out"); } } class IncreaseThread extends Thread{ private Operate o; public IncreaseThread(Operate o) { this.o = o; } @Override public void run() { for(int i = 0;i<250;i++){ o.increase(); } } } class DecreaseThread extends Thread{ private Operate o; public DecreaseThread(Operate o) { this.o = o; } @Override public void run() { for(int i = 0;i<250;i++){ o.decrease(); } } }
发表评论
-
[转]Spring Cloud微服务的那点事
2018-04-20 21:58 681转自:https://blog.csdn.ne ... -
[转]ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
2018-04-20 17:10 883本文转自:https://my.oschin ... -
生成无重复的hashid短地址(短随机字符串)
2017-04-26 14:57 2197具体查看项目: http://hashids.org/j ... -
2017年Struts漏洞修复:版本从2.3.15.1升级到2.3.32
2017-03-24 15:10 2014如果你当前的项目使用了Struts2.3.5至 Strut ... -
多线程爬虫Miner [转]
2016-08-01 13:49 838多线程爬虫Miner 本文转自原作者博客:http:/ ... -
JAVA关键字替换
2015-11-03 21:22 1054import java.util.ArrayList; ... -
关于java web前后端分离
2015-08-27 22:47 1940由于公司架构上需要前后端分离,这里先记录一下相关内容,待后 ... -
基于NODEJS的前后端项目分离实践
2015-06-17 14:07 1204前后端分离项目实践 本文转自:http://jiangxi ... -
paypal IPN返回
2015-05-28 10:12 20671.设定返回的地址 目标:登录paypal-->用户 ... -
根据class搜索jar包
2015-05-20 13:00 882http://grepcode.com/ -
基于DWR的点对点聊天实现 server---client
2015-04-28 16:53 1140本文转自:http://htj1231825.iteye.c ... -
Java分布式中文分词组件word分词v1.2发布
2015-04-20 12:07 809word分词是一个Java实现的分布式的中文分词组件,提供了 ... -
java开源论坛jeebbsV4发布
2015-04-08 09:56 621论坛APP的帖子新展现形式 APP即时聊天模块 ... -
开源大数据解决方案
2015-03-12 13:01 1073解决方案 开发商 类型 描述 Storm Twit ... -
根据用户IP查询所属国家(数据库版)-geoip
2015-03-06 14:44 1195关键词:geoip,最新版本GeoIP2 http:// ... -
查询用户IP所在地服务接口(淘宝)
2015-03-04 10:17 1081import java.io.BufferedReader; ... -
java内存溢出优化
2014-12-28 12:42 2201本文转自:http://www.importnew.com ... -
Tomcat6线程池(Executor Thread pool)的配置
2014-12-27 01:07 920原文地址:http://www.java2000.net/p ... -
Netty学习系列导航-开源Java高性能NIO框架推荐
2014-08-13 17:49 1349纯记录,事件驱动服务器和客户端设计: http://mus ... -
破解验证码相关:用imagemagick和tesseract-ocr破解简单验证码
2014-08-13 17:08 2960本文源自:http://hooopo.iteye.com/ ...
相关推荐
### 15个多线程问题集锦:Java多线程的核心使用问题及注意事项 #### 1. 多线程执行顺序控制 - **问题描述**:假设存在三个线程T1、T2、T3,如何确保T2在线程T1执行完毕后开始执行,而T3又在线程T2执行完毕后开始...
以下是一些关于Java多线程编程的知识点: 1. **线程安全**:在多线程环境中,线程安全意味着多个线程访问共享数据时不会引发数据不一致或异常。实现线程安全的方法包括使用`synchronized`关键字、Lock接口(如...
5. **多线程编程**:Java提供了丰富的多线程支持,经典项目会涵盖线程同步、线程池、守护线程等概念。比如,实现一个下载器,需要用到多线程并发下载,这就涉及到线程间的协作和控制。 6. **异常处理**:在实际项目...
6. **多线程**: - **Thread类与Runnable接口**:创建线程有两种方式,直接继承Thread类或实现Runnable接口。后者更适合多个线程共享同一个资源。 - **同步机制**:synchronized关键字用于控制并发访问,避免数据...
6. **多线程**:Java提供了强大的多线程支持,书中会有创建和管理线程、线程同步、锁机制等相关实例,帮助读者理解和运用并发编程。 7. **网络编程**:Java的Socket编程接口使得创建网络应用程序成为可能,书中的...
6. **多线程**:Java内置了对多线程的支持,可以创建Thread类的实例或实现Runnable接口来并发执行任务。 7. **反射**:Java反射机制允许在运行时动态访问类的信息,如类名、方法、字段等,增强了程序的灵活性。 8....
Java 高并发多线程编程系列案例代码 & 教程 & 面试题集锦! !! 包括但不限于线程安全性, atomic包下相关类、CAS原理、Unsafe类、synchronized关键字等的使用及注意事项,
4. **多线程**:Java提供了丰富的多线程支持,如Thread类、Runnable接口、同步机制(synchronized关键字、Lock锁、信号量等)、线程池(ExecutorService)等。 5. **IO流与NIO**:输入/输出流的理解,以及...
### Java面试问题集锦 #### 一、运行程序之前: ##### Path与classpath图解 - **Path**:指的是操作系统环境变量中的PATH,它定义了系统查找可执行文件的路径列表。当用户在命令行中输入一个命令时,系统会在PATH...
6. **多线程**:Java内置了对多线程的支持,通过Thread类和Runnable接口可以创建并管理多个执行线程,实现并发执行任务。 7. **网络编程**:Java的Socket编程允许创建客户端和服务器应用,进行TCP/IP通信。...
7. **多线程**:Java内置对多线程的支持,通过`Thread`类或实现`Runnable`接口创建线程。理解线程同步、互斥、死锁等概念,能有效地编写并发程序。 8. **泛型**:泛型引入了类型安全,允许在编译时检查类型。理解并...
### Java工程师面试题集锦详解 #### Java基础知识 1. **作用域public, protected, private, 以及不写时的区别** - **public**: 公开的,可以在任何地方被访问,包括同一个类、同一个包内及不同包内的类。 - **...
这本书的核心就在于提供了一系列的实际项目案例,这些案例涵盖了JAVA开发的多个方面,包括但不限于基础语法、面向对象编程、异常处理、集合框架、多线程、网络编程、IO流、数据库操作、Swing图形界面设计、JSP与...
多线程是Java的一大亮点,书中的实例将指导你如何创建和管理线程,理解同步和互斥的概念,以及如何使用锁机制确保程序的并发安全。 此外,Java还提供了丰富的API,如Swing和JavaFX用于构建桌面应用,Servlet和JSP...
6. **多线程**:Java支持多线程编程,通过Thread类或Runnable接口实现,有助于提高程序的并发性能。 7. **反射机制**:Java反射允许在运行时检查类的信息,动态创建对象和调用方法,这对于编写通用性强的代码非常...
6. **多线程**:线程的创建、同步、通信,以及死锁、活锁的概念和避免策略。 7. **反射机制**:如何在运行时获取类的信息,动态创建对象,调用方法等。 8. **JVM内存管理**:理解堆、栈、方法区,垃圾收集的工作原理...
11. **多线程**:线程的创建(Thread类和Runnable接口)、线程同步(synchronized关键字、wait()、notify()、notifyAll()方法)以及线程池的使用。 12. **内存模型**:了解JVM内存结构,包括堆内存、栈内存、方法区...
Java 面试题集锦 Java 基础知识点: 1. JDK 和 JRE 的区别: JDK(Java Development Kit)是 Java 开发工具包,提供了 Java 的开发环境和运行环境。JRE(Java Runtime Environment)是 Java 运行环境,为 Java 的...
6. **多线程**:Java提供了丰富的多线程支持,如Thread类和Runnable接口。理解线程的生命周期,同步机制(如synchronized关键字、wait()、notify()方法)以及并发工具类(如Semaphore、CyclicBarrier、...
5. **多线程**:Java提供了丰富的多线程支持,案例可能涉及线程同步、线程池、守护线程等,让读者理解并发编程的关键概念。 6. **Swing与AWT**:作为Java的图形用户界面(GUI)库,Swing和AWT的案例将展示如何创建...