`

93.设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

阅读更多
public class ThreadTest1 {
	private int j;
	
	public static void main(String args[]) {
		ThreadTest1 tt = new ThreadTest1();
		Inc inc = tt.new Inc();
		Dec dec = tt.new Dec();
		for (int i = 0; i < 2; i++) {
			Thread t = new Thread(inc);
			t.start();
			t = new Thread(dec);
			t.start();
		}
	}

	private synchronized void inc() {
		j++;
		System.out.println(Thread.currentThread().getName() + "-inc:" + j);
	}

	private synchronized void dec() {
		j--;
		System.out.println(Thread.currentThread().getName() + "-dec:" + j);
	}

	class Inc implements Runnable {
		public void run() {
			for (int i = 0; i < 100; i++) {
				inc();
			}
		}
	}

	class Dec implements Runnable {
		public void run() {
			for (int i = 0; i < 100; i++) {
				dec();
			}
		}
	}
}
分享到:
评论

相关推荐

    多线程设计一个火车售票模拟程序

    程序设计 在程序中,我们定义了一个 SaleTickets 类,该类实现了 Runnable 接口。该类中有两个成员变量:total 和 count,分别表示剩余的火车票数和已经售出的火车票数。在 run 方法中,我们使用 while 循环来模拟...

    实现一个数据单元,包括学号和姓名两部分。编写两个线程,一个线程往数据单元中写,另一个线程往出读。要求每写一次就往出读一次。

    本实验的任务是设计并实现一个数据单元,该单元包含学号和姓名两个字段,并且使用两个线程,一个用于写入数据,另一个用于读取数据。这种设计模式被称为“生产者-消费者”问题,是多线程编程中的经典案例。 首先,...

    Java多线程程序设计

    Java多线程程序设计是Java开发中的重要领域,它允许应用程序同时执行多个任务,从而提高系统资源的利用率和程序的响应速度。在Java中,多线程主要通过两种方式实现:继承Thread类和实现Runnable接口。 一、创建线程...

    Java实验6多线程.doc

    此外,线程中抛出的异常如果不被捕获,可能会导致整个应用崩溃,因此要确保每个线程都有适当的异常处理机制。 6. **线程生命周期管理**: 一旦客户端断开连接,对应的服务器线程应当终止。可以使用`Thread....

    POSIX多线程程序设计中文版-Examples

    POSIX多线程程序设计是Linux系统开发中的一个重要领域,它允许程序员创建并管理多个并发执行的线程,以提高程序的效率和响应性。在Linux环境下,POSIX线程(通常称为pthreads)标准提供了丰富的接口来实现多线程编程...

    Win32Win32多线程程序设计(侯捷译).rar

    《Win32多线程程序设计》是由著名程序员侯捷翻译的一本技术专著,主要针对Windows操作系统环境下的多线程编程进行深入探讨。多线程编程是软件开发中的一个重要领域,尤其在需要同时处理多个任务或提升系统性能时,多...

    POSIX多线程程序设计

    例如,当多个线程试图同时修改同一变量时,互斥量可以确保每次只有一个线程进行修改。 书中还会涉及线程属性和调度策略。线程属性包括栈大小、优先级、调度策略等,可以通过`pthread_attr_init`和`pthread_attr_set...

    二十一道面试程序.txt

    3. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少 4. 用java代码对XML进行解释。 5. 用java语言实现文件上传操作,并将文件原样读出。 6. 用java语言实现图片的上传,并将图片读出。 7. 用三大...

    多线程之间的线程通信

    互斥锁确保任何时候只有一个线程可以访问共享资源,而读写锁允许多个线程同时进行读操作,但写操作仍然是互斥的。 3. **条件变量(Condition Variable)**:线程可以等待某个特定条件满足后才继续执行,这通常与锁...

    用VB写“多线程”程序.zip_vb 多线程_vb多线程_visual basic_多线程

    - **线程池**:系统维护的一个线程集合,用于执行短生命周期的任务,减少线程创建和销毁的开销。 - **ThreadPool.QueueUserWorkItem**:用于向线程池提交任务。 9. **VB.NET的BackgroundWorker组件** - **UI线程...

    利用单线程完成的生产者与消费者程序

    在多线程环境下,生产者和消费者是两个不同的线程,它们共享一个缓冲区来存储数据。生产者将数据放入缓冲区,而消费者从缓冲区取出数据。为了确保线程安全,通常需要使用锁或信号量等同步机制来避免数据竞争。 然而...

    基于多线程的聊天程序

    在聊天程序中,多线程的应用主要体现在以下两个方面: 1. **用户界面线程**:此线程负责处理用户交互,如接收用户输入、显示聊天消息等。保持用户界面的响应性至关重要,因此通常会将UI放在单独的线程中,避免因...

    关于多线程的一个小程序

    1. 线程安全:当多个线程访问同一数据时,如果代码能保证数据的完整性和一致性,那么我们就说这个代码是线程安全的。为了实现线程安全,通常需要使用锁(如互斥量、信号量)或其他同步机制。 2. 死锁:两个或更多...

    POSIX多线程程序设计+源码

    - `pthread_self()`返回当前线程的ID,而`pthread_equal()`比较两个线程ID是否相同。 - `pthread_getschedparam()`和`pthread_setschedparam()`用于获取和设置线程的调度参数。 7. **信号与线程** - 信号处理在...

    深入浅出Win32多线程程序设计之综合实例

    例如,当两个线程试图同时访问串口时,可能需要使用`Mutex`来确保同一时间只有一个线程能操作串口。 总结起来,Win32多线程程序设计结合串口通信和网络通信,能够实现高效、并发的应用程序。理解并熟练掌握这些技术...

    C#多线程编程实例实战.doc

    1. 当一个线程正在写入数据时,其他线程不能写,也不能读。 2. 当一个线程正在读入数据时,其他线程不能写,但能够读。 在数据库应用程序环境中经常遇到这样的问题,如多个用户同时访问同一个数据库,我们不能让两...

    Visual Basic 6.0建立多线程程序就是这么简单

    `AsyncThread`、`AsyncThread1`和`AsyncThread2`分别为三个线程执行的具体任务。 #### 四、方法2:使用多个Timer控件模拟多线程 另一种实现多线程的方法是利用VB6内置的Timer控件。虽然这不是真正的多线程实现,但...

    操作系统——实验四 windows中线程的创建和同步控制

    这两个线程共享一个数组A,写线程对数组分别进行10次写操作,每次写操作对A的每个元素赋一个相同的值;读线程对数组分别进行10次读操作,每次读操作输出A中所有元素的值。写出相应代码,并分析运行结果。修改代码,使...

    java多线程设计模式_java_设计模式_多线程_多线程课题_

    死锁是多线程编程中的常见问题,两个或多个线程互相等待对方释放资源,导致无法继续执行。Java的jstack工具可以帮助检测死锁,而在编程时应避免循环等待,合理设计锁的获取顺序,以减少死锁的风险。 以上就是Java多...

Global site tag (gtag.js) - Google Analytics