- 浏览: 1357088 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (453)
- Struts2 (4)
- Struts1 (16)
- Spring (9)
- Hibernate (5)
- AJAX (16)
- MS Server (9)
- Oracle (35)
- 测试技术 (5)
- 其他 (37)
- JSF (1)
- EJB (5)
- ASP.NET (9)
- iBATIS (5)
- Struts Spring Hibernate (2)
- HTML (12)
- Eclipse使用 (5)
- 设计模式 (5)
- JSP (32)
- 正则表达式 (2)
- 服务器 (12)
- Java基础 (48)
- MySQL (4)
- 面试 (22)
- UML (1)
- 数据结构 (3)
- Ant (2)
- 规范 (4)
- JavaScript (29)
- 软件使用及技巧 (25)
- PHP (1)
- DWR (3)
- FreeMarker (1)
- ExtJs (17)
- JFreeChart (9)
- Reports (2)
- JavaException (1)
- Java Mail (1)
- Flex (9)
- 异常 (12)
- Log4j (2)
- WebService (1)
- jQuery (1)
- Sybase (2)
- myeclipse_plugin (2)
- Linux (5)
- jbpm (2)
- SCM (1)
- mongoDB (1)
最新评论
-
lihua2008love:
<typeAlias alias="User& ...
IBATIS简单操作 -
lihua2008love:
...
关于项目框架设计的一点学习 -
c_jinglin:
我使用<OBJECT CLASSID="cls ...
这就是个静态页面通过js控制mscomm对某com设备进行访问的例子. -
zlbjava:
赞,用了还不错
java获取请求的ip地址,并解析ip所属地区 -
完美天龙:
cs842813290 写道楼主,我明白的地方:在链表已有N个 ...
JAVA实现双向链表
题目:请编写一个多线程程序,实现两个线程,其中一个线程完成对某个对象的int成员变量的增加操作,即每次加1,另一个线程完成对该对象的成员变量的减操作,即每次减1,同时要保证该变量的值不会小于0,不会大于1,该变量的初始值为0.
即要求输出结果是0101010101010101这样的形式
关于wait,notify,notifyAll以及sleep方法的关系(重点)
1 如果一个线程调用了某个对象的wait方法,那么该线程首先必须要有该对象的锁(换句话说,一个线程调用了某个对象的wait方法,你们该wait方法必须要在synchronized中)
2 如果一个线程调用了某个对象的wait方法,那么该线程就会释放该对象的锁
3 在java对象中,有两种池(锁池,等待池)
4 如果一个线程调用了某个对象的wait方法,那么该线程进入该对象的等待池中(释放锁),如果未来的某一时刻,另外一个线程调用了相同的对象的notify或notifyall方法,那么在该等待池中的等待的线程就会起来进入该对象的锁池中,去等待获得该对象的锁,如果获得锁成功后,那么该线程将继续沿着wait方法之后的路径去执行。
5 sleep(long time),如果一个线程调用了sleep方法睡眠,那么在睡眠的同时,它不会失去对象的锁的拥有权。
关于synchronized关键字的作用
1 在某个对象的所有synchronized方法中,在某一时刻,只能有一个唯一的一个线程去访问这些synchronized方法
2 如果一个方法是synchronized方法,那么该synchronized关键字表示给当前对象上锁(即this)
3 如果一个synchronized方法是静态的(static的),那么该synchronized关键字表示给当前对象所对应的Class对象上锁。(每个类,不管生成多少对象,其Class对象只有一个)
代码示例一、
- package com.test.thread;
- public class Sample {
- private int number;
- public synchronized void increate()
- {
- while(number>0)
- {
- try {
- wait();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- number++;
- System.out.println(number);
- notify();
- }
- public synchronized void decreate()
- {
- while(number==0)
- {
- try {
- wait();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- number--;
- System.out.println(number);
- notify();
- }
- }
- package com.test.thread;
- public class IncreateThread extends Thread {
- private Sample sample;
- public IncreateThread(Sample sample)
- {
- this.sample = sample;
- }
- @Override
- public void run() {
- for(int i=0;i<5;i++)
- {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- sample.increate();
- }
- }
- }
- package com.test.thread;
- public class DecreateThread extends Thread {
- private Sample sample;
- public DecreateThread(Sample sample)
- {
- this.sample = sample;
- }
- @Override
- public void run() {
- for(int i=0;i<5;i++)
- {
- try {
- sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- sample.decreate();
- }
- }
- }
- package com.test.thread;
- public class TestThread {
- /**
- * @param args
- */
- public static void main(String[] args) {
- Sample sample = new Sample();
- Thread thread1 = new IncreateThread(sample);
- Thread thread2 = new DecreateThread(sample);
- Thread thread3 = new IncreateThread(sample);
- Thread thread4 = new DecreateThread(sample);
- thread1.start();
- thread2.start();
- thread3.start();
- thread4.start();
- }
- }
发表评论
-
百度之星第一场题目
2009-06-01 08:55 1732百度之星2009程序设计大赛 初赛第一场试题 ... -
简单的JAVA反射应用
2008-07-02 23:39 1471获得某个类的对应的Class对象的方式: 1、使用类的.cl ... -
参数传递的过程
2008-07-02 23:37 1269在JAVA里面,对于方法的参数传递,不管是原生数据类型还是引用 ... -
String类要点
2008-07-02 23:36 14091、考查"=="的结果 2、String的 ... -
关于集合,你搞明白了吗?
2008-07-02 23:35 12771、当向集合set中增加 ... -
session与cookie的区别?
2008-07-02 23:34 1934session与cookie的区别? ... -
迅雷面试部分题
2008-05-11 07:06 1876在做的时候,把部份觉 ... -
2007年8月25日华为的几个面试题
2008-05-08 02:30 15631、下题的输出是什么: /** * 问下题的输出结果是什么 ... -
联想面试智力题,听说前面三道题必考(有部份解答)
2008-05-08 02:08 3238联想面试智力题,所说前面三道题必考,这个没有被证实过。不过,当 ... -
JAVA面试题
2008-05-08 02:06 1744网上找到一些JAVA面试题,不过,不管是不是面试题,有些时候在 ... -
华为的JAVA面试题及答案(部分)
2008-05-08 01:58 5130(后记:没有想到华为 ... -
作一份高水准的简历
2008-05-08 01:55 1961简历种类 1.中式 如果 ... -
华为面试题及答案
2008-05-08 01:52 5207这是第三次接到华为的面试电话了,第一交是自己投的简历,第二次及 ... -
JAVA面试题集 (下)
2008-05-07 22:58 1570Servlet方面 1、说一说Servlet的生命周期? ... -
JAVA面试题集 (上)
2008-05-07 22:55 18181.C++或Java中的异常处理 ... -
Java 面试中的陷阱
2008-05-07 22:53 1334以下题目来自包括IBM, E* ... -
Java学习题
2008-05-07 22:52 1408据说,如果你能独立完成(不用看资料,不借助调试)回答在60分以 ... -
外企面试官最爱提的问题TOP10
2008-05-07 22:51 14511.请介绍一下你自己。 这是外企常问的问题。一般人回 ... -
70个JAVA问答!
2008-05-07 22:33 18371. 问:在JAVA与JSP中要调 ... -
java常见面试题
2008-05-07 22:28 16841.面向对象的特征有哪些方面 1.抽象: 抽象就是忽 ...
相关推荐
标题中的“关于多线程的专用书籍是真的”表明这是一本专门探讨多线程编程的书籍,而描述中的“多线程的专用书籍这是很好的”进一步确认了这本书的专业性和价值。多线程是计算机编程中一个重要的概念,尤其是在并发...
以下是对"Delphi关于多线程的资料"的详细说明。 一、多线程基础 1. 线程概念:线程是操作系统分配CPU时间的基本单元,一个进程中可以有多个线程同时运行。在Delphi中,我们可以创建并管理多个线程来执行不同的任务...
"vc关于多线程测试程序"是一个针对多线程操作进行测试的应用,主要用于演示和验证如何在Windows环境下使用Visual C++(VC)进行多线程编程。 首先,我们要理解多线程的基本概念。多线程是指一个进程中可以同时执行...
#### 一、关于多线程编程 ##### 1.1 什么是多线程 多线程编程是指在一个程序中同时运行多个执行路径的能力。这些执行路径称为“线程”。多线程可以提高程序的响应性和效率,特别是在处理复杂任务或需要等待外部...
在本“关于多线程的C#小程序”中,我们将深入探讨如何在C#环境中创建和管理多线程,以及如何进行有效的异常处理。 一、线程基础 线程是操作系统分配CPU时间的基本单位。在单核处理器中,一个进程只有一个线程,但在...
《关于多线程的专用书籍》是一本深入探讨多线程技术的专业著作,它涵盖了多线程的基础理论以及在各种实际场景中的应用。在当今的计算机科学领域,多线程已经成为提升程序性能、优化资源利用的关键技术。尤其在并发...
关于多线程的个人总结,包括概念理解、创建线程、线程同步安全、各类锁、线程状态、并行并发、异步同步等
本文将详细解析标题为“一个关于多线程的例子”的案例,该案例涉及了进度条(progress控件)的使用,包括开始、暂停和恢复等功能。 首先,多线程允许程序同时执行多个任务,提升效率。在单核CPU中,操作系统通过...
【标题】"关于多线程的C#打字游戏"是一个使用C#编程语言实现的项目,它结合了多线程技术与打字训练的元素,旨在为用户提供一种有趣的学习和娱乐方式。在多线程的环境下,游戏的运行效率和用户体验可能会得到显著提升...
### Linux多线程 C语言编程知识点总结 #### 一、多线程与多进程编程概述 **多线程**的概念可以追溯到20世纪60年代,然而直到80年代中期,这一机制才被正式引入到Unix系统中。随着计算机硬件的发展及软件需求的增加...
在IT领域,多线程是一种编程技术,它允许应用程序同时执行多个任务,从而提高系统效率和响应速度。本文将深入探讨多线程的概念、应用场景以及如何在实际编程中实现。 多线程是操作系统中的一种机制,它允许一个进程...
多线程编程是一种在单个程序中同时执行多个任务的技术,它可以提高计算机系统的效率和响应性。在多线程环境中,多个线程共享同一进程的资源,如内存和打开的文件,但每个线程都有其独立的执行路径,即线程上下文。...
在iOS开发中,多线程是一项至关重要的技术,它使得应用程序可以同时执行多个任务,提升用户体验,优化系统资源的利用。本主题将深入探讨两个经典iOS多线程的例子,主要涉及`NSThread`类的使用。 一、多线程基础 在...
`MuiltiThreading`这个文件可能包含了关于多线程编程的实例代码,它可以帮助你更好地理解如何在实际项目中创建和管理线程,以及如何处理线程安全问题。通过分析和运行这些示例,你可以深入学习到如何在多线程环境中...
在编程领域,多线程是实现并发执行任务的关键技术,特别是在C#这样的现代编程语言中。C#打字游戏是一个很好的实例,它展示了如何利用多线程来提高应用程序的响应性和用户体验。在这个项目中,我们可以学习到如何创建...
在编程领域,多线程是实现并发执行任务的重要机制,尤其在现代计算机系统中,它被广泛应用于提高软件性能和用户体验。本资料包是针对多线程入门的学习资源,涵盖了多线程的基础概念、创建与管理以及同步控制等多个...
《C#并发编程经典实例》是一本专注于C#多线程开发的重要著作,它深入浅出地探讨了在C#环境中进行并发编程的各种技术和实践。并发编程是现代软件开发中的核心概念,尤其在多核处理器普及后,充分利用系统资源、提高...
本书是关于多线程编程的权威指南,它涵盖了编写高效、安全的多线程程序所需的所有重要知识点。 描述中提到,这是一本“经典多线程文档”,表明了其在行业内的地位和影响力。书中描述了多线程之间的交互和通信机制,...