`

Java之Thread(线程题)

    博客分类:
  • Java
阅读更多
特别说明:java线程相关的参考了张孝祥老师的代码
参考资料:
《深入浅出 Java Concurrency》目录
http://www.blogjava.net/xylz/archive/2010/07/08/325587.html
问题如下:
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1!
public class MultiThreadTest {

	
	static MyData m = new MyData();
	
	public static void main(String[] args) {
		
		MyData m2 = new MyData();
		new Thread(new MyDataManager(m2)).start();
		new Thread(new MyDataManager2(m2)).start();		
		
		
		new Thread(new Runnable(){
			@Override
			public void run() {
				m.inc();
								
			}
		}).start();
		
		new Thread(new Runnable(){
			@Override
			public void run() {
				m.dec();
								
			}
		}).start();
		
		System.out.println(m.getAge());

	}

}

class MyDataManager implements Runnable{
	MyData m ;
	public MyDataManager(MyData m){
		this.m = m;
	}
	@Override
	public void run() {
		m.inc();		
	}
}
class MyDataManager2 implements Runnable{
	MyData m ;
	public MyDataManager2(MyData m){
		this.m = m;
	}
	@Override
	public void run() {
		m.dec();	
	}
}

class MyData{
	private int age = 0;
    synchronized void inc(){
		++age;
	}
    synchronized void dec(){
		--age;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}	
}

网上实现如下:
http://skyuck.iteye.com/blog/540660
public class threadtest1 {
  private int j;
  Thread thread = new Thread();
  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();
  }
  }
  }

  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();
  }
  }
}
分享到:
评论

相关推荐

    JAVA多线程练习题答案。

    例如,第 1 题考查了 Thread 类的基本方法,第 2 题考查了线程的状态,第 3 题考查了线程的优先级等。 三、判断题 在判断题中,我们可以看到各种关于 JAVA 多线程编程的技术细节。例如,第 1 题考查了线程的生命...

    java基础多线程练习题(1)

    在Java编程语言中,多线程是核心特性之一,它使得程序可以同时执行多个不同的任务,从而提高了系统资源的利用率和程序的响应速度。本文将深入探讨Java中的多线程概念,以及如何通过实践来提升对这一主题的理解。 ...

    Java多线程练习题

    在Java中,多线程的实现主要通过两种方式:继承Thread类和实现Runnable接口。理解并掌握多线程的使用对于任何Java开发者来说都至关重要。 一、线程的创建与启动 1. 继承Thread类:创建一个新的类,该类继承自Thread...

    Java 模拟线程并发

    在Java中,线程并发可以通过多种方式实现,包括继承Thread类、实现Runnable接口以及使用ExecutorService和Future等高级API。下面将详细探讨这些知识点。 首先,Java中创建线程主要有两种方法。一种是通过继承Thread...

    java经典多线程面试题

    在Java中,多线程是一种非常重要的编程概念,...这些面试题涵盖了Java多线程编程的基础知识、同步机制、线程间通信以及并发集合类等多个方面。在准备面试时,对这些问题进行深入理解和准备,能够有效提升面试的成功率。

    java多线程面试题和答案

    以下是一些关于Java多线程的面试题及其答案,涵盖了基础概念、并发控制、线程安全以及性能优化等方面。 1. **什么是Java多线程?** 多线程是指在单个程序中同时执行多个线程,这样可以提高应用程序的效率和响应...

    Java-Thread-Affinity,将Java线程绑定到给定的内核.zip

    Java线程亲和性(Thread Affinity)是一个高级并发编程概念,主要涉及到操作系统调度和硬件资源的优化。在多核处理器系统中,线程亲和性允许开发者指定某个线程应该运行在哪个特定的处理器核心上,从而提高性能、...

    java多线程面试题59题集合

    以下是对Java多线程面试题59题集合中可能涉及的一些关键知识点的详细解析。 1. **线程的创建方式** - 继承Thread类:创建一个新的类,该类继承自Thread类,并重写其run()方法。 - 实现Runnable接口:创建一个实现...

    史上最全 Java 多线程面试题及答案

    Java多线程是Java编程中不可或缺的一部分,它允许并发执行多个任务,从而提高应用程序的效率和响应速度。本文将深入探讨Java多线程的相关知识点,包括它的用途、创建线程的方式、start()与run()的区别、Runnable和...

    多线程面试题

    2. **Java中的线程创建方式**:Java提供了两种创建线程的方式——继承Thread类和实现Runnable接口。继承Thread类直接覆盖run()方法,而实现Runnable接口则需要创建一个实现了Runnable接口的类,并重写run()方法,...

    线程 JAVA java线程 java线程第3版 java线程第2版第3版合集

    电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition.Sep.2004.eBook-DDU Java Thread Programming (Sams) java线程第二版中英文 java线程第二版中英文 ...

    Java Thread多线程全面解析

    Java Thread多线程全面解析涵盖了Java编程中关于线程的重要概念和实践技巧。在Java中,多线程是并发编程的基础,允许程序同时执行多个任务,提高系统资源利用率和应用程序的响应速度。 线程的生命周期包括五个基本...

    Java多线程机制(讲述java里面与多线程有关的函数)

    Java多线程机制是Java编程中至关重要的一部分,它允许程序同时执行多个任务,提升应用程序的效率和响应性。以下是对各个知识点的详细说明: 9.1 Java中的线程: Java程序中的线程是在操作系统级别的线程基础上进行...

    Java工程师线程试题

    2. **线程创建方式**:Java提供两种创建线程的方式:继承`Thread`类或者实现`Runnable`接口。这两种方式创建的线程都可以通过`start()`方法启动,但它们不能交叉执行,因为Java的线程调度是由JVM控制的。 3. **临界...

    java面试题之多线程.pdf

    Java中的多线程是面试中常见的话题,因为它在并发编程中扮演着重要角色。线程允许应用程序同时执行多个任务,从而提高系统效率和响应性。理解线程的概念、创建方式以及状态转换对于Java开发者至关重要。 1. **线程...

    java多线程Demo

    在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新的类,让它继承Thread类时,可以通过重写`run()`方法来定义线程执行的任务。然后创建该类的对象,并...

    java多线程知识讲解及练习题

    Java 多线程知识讲解及练习题 Java 多线程基础知识的了解是 Java 程序设计的重要组成部分,本资源摘要信息对 Java 多线程基础知识进行了详细的讲解和练习题。 1. sleep() 和 wait() 的区别 sleep() 是 Thread 类...

    javad多线程

    "多线程编程详解" Java 多线程编程是指在一个程序中可以运行多个线程,以提高程序的执行效率和响应速度。...Java 中的多线程编程可以通过 Thread 类和 Runnable 接口来实现,需要解决线程同步和线程阻塞问题。

    java多线程进度条

    Java通过Thread类和Runnable接口来支持多线程。创建一个新线程通常有两种方式:继承Thread类并重写run()方法,或者实现Runnable接口并提供run()方法。在run()方法中编写线程执行的代码。 进度条通常由主线程负责...

Global site tag (gtag.js) - Google Analytics