`

线程初学

阅读更多
class MyThread implements Runnable{
	int i = 100;
	public void run(){
		while(true){
			synchronized(this){
			//Thread.currentThread()获取当前代码在哪个线程中运行,会返回线程对象(Thread对象)
			System.out.println(Thread.currentThread().getName() + i);
			i--;
			//让线程让出CPU,使所有线程重新竞争CPU
			Thread.yield();
			if(i<0)
				break;
			}
		}
	}
}

class Test{
	public static void main(String[] args){
		MyThread mythread = new MyThread();
		
		//生成两个Thread对象,但是这两个Thread对象共用同一个线程体
		Thread t1 = new Thread(mythread);
		Thread t2 = new Thread(mythread);
		
		//每一个名字都有名字,可以通过Thread对象的setName()方法设置线程名字
		t1.setName("线程a");
		t2.setName("线程b");
		
		//分别启动两个线程
		t1.start();
		t2.start();
	}
}


——————————————————————————————
synchronized用法同步锁(锁代码块)
class Service{
	public void fun1(){
		synchronized(this){
			try{
				Thread.sleep(3 * 1000);
			}
			catch(Exception e){
				System.out.println(e);
			}
			System.out.println("fun1");
		}
	}
	
	public void fun2(){
		synchronized(this){
			System.out.println("fun2");
		}
	}
}

class MyThread1 implements Runnable{
	private Service service;
	
	public MyThread1(Service service){
		this.service = service;
	}
	
	public void run(){
		service.fun1();
	}
}

class MyThread1 implements Runnable{
	private Service service;
	
	public MyThread1(Service service){
		this.service = service;
	}
	
	public void run(){
		service.fun2();
	}
}

class Test{
	public static void main(String[] args){
		Service service = new Service();
		Thread t1 = new Thread(new MyThread1(service));
		Thread t2 = new Thread(new MyThread2(service));
		
		t1.start();
		t2.start();
	}
}

——————————————————
synchronized用法同步锁(锁方法)
分享到:
评论

相关推荐

    多线程初学小练习

    ### 多线程初学小练习 #### 背景介绍 在计算机科学领域中,多线程技术是实现程序并行处理的关键方法之一。它允许一个程序中的多个任务同时执行,极大地提高了程序的效率与响应速度。对于初学者而言,理解和掌握多...

    java 线程初学者资料

    Java 线程初学者资料 Java 中的线程是一个复杂的主题,对初学者来说可能有些难以掌握。然而,理解 Java 线程是非常重要的,因为它可以帮助我们编写高效的程序。 Java 中的线程有两种实现方法,一种是实现 Runnable ...

    Java多线程初学者指南

    Java多线程初学者指南是一份详尽的教育资源,涵盖了多线程编程的基本概念和实践技巧,适合初学者深入理解这一重要技术。本指南通过12篇文档,逐步引导学习者掌握Java多线程的核心知识。 首先,让我们从基础开始,...

    java线程初学者帮助

    ### Java线程初学者知识点详解 #### 一、线程基础概念 在计算机科学中,线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。对于Java初学者而言,理解线程的基础概念至关...

    Java多线程初学者指南(7):向线程传递数据的三种方法.docx )

    Java 多线程初学者指南之向线程传递数据的三种方法 在多线程编程中,向线程传递数据是一项非常重要的任务。与传统的同步开发模式不同,在多线程异步开发模式下,数据的传递和返回方式有很大的区别。因此,本文将...

    java多线程初学者教程

    ### Java多线程初学者教程知识点详解 #### 一、多线程概念解析 - **定义与特性**:多线程是一种程序结构设计方式,它允许多个指令流在同一程序中并发执行。每个指令流被称作一个线程,它们在逻辑上可以“同时”执行...

    Java多线程初学者指南:线程的生命周期.pdf

    在Java编程中,多线程是一项重要的特性,它允许程序同时执行多个任务,提升效率。本文将深入探讨Java多线程中的线程生命周期,以及如何控制线程的状态转换。 线程的生命周期通常包括五个基本状态:新建(New)、...

    MFC用户界面线程与工作者线程

    在Windows编程领域,MFC(Microsoft Foundation Classes)是一个强大的C++库,用于构建基于Windows的应用程序。本主题将深入探讨MFC中用户...对于线程初学者来说,理解这种分离和协作模式是提升编程技能的重要一步。

    多线程练习题java

    java多线程初学者练习题目,供初学者练习使用

    C# 多线程电子文档

    想学多线程,对多线程不了解的同学可以看看,不错的学习文档吗,适合多线程初学者

    .NET中的线程初学者指南:n的第5部分

    这篇初学者指南的第五部分主要聚焦于如何在不同的用户界面(UI)技术中有效地利用线程。对于任何开发人员来说,理解线程处理尤其是在UI应用程序中至关重要,因为它可以提高程序的响应性和性能。 首先,我们来了解...

    halcon与c#联合编程实例 多线程图像处理Project,适合初学者~

    通过这个多线程图像处理项目,初学者可以学习到如何在实际工程中结合Halcon的强大功能和C#的易用性,实现高效、并发的图像处理任务。随着经验的增长,你还可以探索更复杂的并发模型,如ThreadPool或Task并行库(TPL)...

    .NET中的线程初学者指南:n的第3部分

    这篇初学者指南的第三部分将深入探讨如何在C#中有效地管理和同步线程。 1. **线程同步基础** - **Monitor对象**:C#提供了`System.Threading.Monitor`类,用于实现基于监视器的线程同步。`Monitor.Enter`和`...

    c++多线程编程初学实例一

    本文将探讨C++多线程编程的基础,通过一个简单的实例帮助初学者理解其核心概念。 首先,我们要知道在C++11及其后续版本中,标准库提供了一个名为`&lt;thread&gt;`的头文件,它包含了创建和管理线程的接口。创建新线程的...

    .NET中的线程初学者指南:n的第2部分

    这篇初学者指南主要针对那些想要深入理解.NET线程机制的人,无论你是C# 2.0、3.0、3.5还是.NET 2.0、3.0或4.x版本的开发者,本指南都将为你提供必要的基础知识。 首先,我们要理解什么是线程。线程是程序执行的独立...

    适合初学者的QT多线程操作的例子

    对于初学者来说,理解和掌握QT中的多线程操作至关重要。 在QT中,多线程主要用于将耗时的操作(如大数据处理、网络通信、数据库操作等)与用户界面的更新分离开来,以避免阻塞UI,提高用户体验。QT提供了QThread类...

Global site tag (gtag.js) - Google Analytics