`

java线程---初步

阅读更多
线程是什么?
线程指的是两件不同的事情:
1,java.lang.Thread的一个实例
2,线程的执行一个Thread实例只是一个对象。像Java中的任何其他对象一样,具有变量和方法,生死在堆上。但是线程的执行时一个单独的进程,有自己的调用栈。每个线程都有自身的调用栈。

不同的JVM可能以不同的方式来运行线程,例如可能在一个jvm上,各个线程分时运行,而有的JVM必须要保证一个线程执行完毕,才能进行切换。

初始化线程实例:
Thread t = new Thread();
或Runnable r = new MyRunnable();
Thread t = new Thread(r);

注意Thread本身实现了Runable接口,所以可以将thread作为Thread t = new Thread();的参数。注意线程执行的次序是没有保障的,并不一定先调用start的thread,就一定先run。当线程执行完其run方法后,不再是一个执行过程,该线程的栈解散。

如果线程已经启动,就不能再次调用start方法启动,会导致异常IllegalThreadStateException。
我们可以使用一些方法来影响线程的调度顺序,记住,是影响,不是控制,只有JVM才能真正控制线程调度。
来自Thread类的方法:
public static void sleep(long sleeptime) throws InterruptedException
        public static void yield()
        public final void join()throws InterruptedException
        public final void setPriority(int newPriority)
位于Object类中的方法有:
public final void notify()
public final void notifyAll()
public final void wait()throws InterruptedException
package threadExamples;

class Printer implements Runnable {

	private String message;

	public Printer(String s) {
		this.message = s;
	}

	@Override
	public void run() {

		for (int i = 0; i < 1000; i++) {
			System.out.println(message);
		}
	}

}

class MyThread extends Thread {
	public void run() {
		for (int i = 0; i < 500; i++) {
			System.out.println("Nice");
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			} // 新线程要等待,必须在run方法中sleep
		}
		System.out.println("End of mythread");
	}
}

public class Main {

	public static void main(String[] args) throws InterruptedException {//主线程
		 MyThread t = new MyThread();
		 t.start(); //启动线程,会和主线程交替执行
		
		for (int i = 0; i < 1000; i++) {
			System.out.println("Good");
		}
		
		
		
		Printer p = new Printer("*");
		Printer p1 = new Printer("+");

		p.run();
		p1.run(); // 注意: 单线程,只是由main调用run方法,并没有启动线程
		// 输出时先是*,后是+,不会出现二者交替输出的情况

		System.out.println("End of main");
	}

}
分享到:
评论

相关推荐

    Java多线程文章系列.pdf

    进程与Java线程的区别 - **内存占用**: - 进程: 每个进程有独立的地址空间,消耗更多内存。 - 线程: 共享同一进程的地址空间,内存消耗较低。 - **上下文切换成本**: - 进程: 上下文切换成本高。 - 线程: 上...

    CoreJava串讲---超好!

    - **JAVA串讲14-18.doc**:此部分可能涉及了Java的IO流和文件操作,以及线程和并发编程的初步介绍。 - **JAVA串讲19-23.doc**:这部分可能会深入讨论反射机制和泛型的使用,以及一些高级的Java特性。 - **串讲.ppt**...

    Java编程-线程实例

    初步学习Java编程的同学可借鉴,学的比较好的就不用看了

    Java线程从入门到实践.doc

    Java线程是编程中的核心概念,尤其是在多任务处理和并发编程中。Java作为一种纯面向对象的语言,其线程模型同样基于面向对象的设计。线程允许程序在同一时间执行多个独立的任务,提高了程序的运行效率。 1. **线程...

    Java课件-张孝详

    14. **Java EE**:简述Java企业版,包括Servlet、JSP、Filter、Listener等Web开发技术,以及MVC设计模式和Spring框架的初步认识。 通过【Java课件_张孝详】中的内容,学习者可以系统性地学习Java编程,逐步提高编程...

    注入 - 代码注入之远程线程篇 - C_C++_Python_Java - 博客园.pdf

    5. 注入技术的实现:文中虽然没有给出详细的代码实现,但作者通过描述创建远程线程和注入代码的过程,让我们对注入技术有了初步的了解。根据描述,我们了解到实现远程线程注入通常需要执行以下步骤: - 提升进程...

    java线程代码

    Java线程是Java编程中的重要概念,它允许程序并发执行多...通过以上讲解,你已经对Java线程有了初步了解,从创建线程到线程同步、通信、管理,以及线程的特殊特性。实践这些知识点,将有助于你在多线程编程中游刃有余。

    Java线程(20210930172753).pdf

    根据提供的文件信息,文件名为《Java线程(***).pdf》,而内容涉及的是Java多线程编程的相关知识点。由于文件内容包含大量重复的关键词,这很可能是OCR扫描时产生的错误,因此在解读时将会忽略这些重复部分,并尝试...

    初步了解java编程语言

    - Java内置对多线程的支持,可以通过实现Runnable接口或继承Thread类创建线程。 - 线程同步机制包括synchronized关键字、wait(), notify(), notifyAll()方法以及Lock接口。 8. **网络编程**: - Java提供了...

    多线程游戏-snake贪吃蛇

    总结,编写一个多线程的Snake游戏,需要理解Java的线程模型,掌握线程的创建、同步和通信,以及GUI编程的基本知识。通过实践,我们可以深入理解并发编程的挑战和解决方案,这对于开发大型、复杂的多用户应用程序至关...

    java多线程开发初步入门

    java程序员初学多线程的可以看看哦 csdn积分只要一分哦

    [JWFD开源工作流]JAVA单线程时钟算法和代码(初步设计)

    本文将深入探讨JAVA单线程时钟算法在JWFD中的应用及其初步设计。 单线程时钟算法是一种用于模拟或控制时间序列的机制,常用于模拟系统、游戏引擎或者任务调度中。在JAVA中,由于其并发特性和线程安全问题,设计一个...

    java基础ppt--传智播客的内容

    在Java的初步学习阶段,会介绍Java的历史、特点以及与其他编程语言的区别。此外,还会讲解Java的开发环境搭建,包括JDK(Java Development Kit)的安装和配置,以及如何使用IDE(集成开发环境)如Eclipse或IntelliJ...

    java线上故障分析-线程dump,堆内存分析

    ### Java线上故障分析:线程dump与堆内存分析 #### 引言 在现代软件开发中,Java作为一门广泛使用的编程语言,在企业级应用、Web服务、大数据处理等多个领域发挥着重要作用。然而,随着系统复杂度的提升,线上环境...

    国泰新点java面试题-停车管理系统-java.zip

    1. Java基础:考察应聘者对Java语法、类、对象、接口的理解,以及异常处理、多线程、集合框架等核心概念的掌握程度。 2. 数据结构与算法:可能涉及到数组、链表、栈、队列等基础数据结构,以及排序、查找等算法的...

    Java程序设计----面向对象

    这将帮助初学者建立Java编程的初步认知。 2. 类与对象:在Java中,一切皆为对象。类是创建对象的蓝图,它定义了对象的属性(成员变量)和行为(方法)。通过实例化一个类,我们可以创建出具有特定属性和功能的对象...

    Memcached学习笔记 — 第四部分:Memcached Java 客户端-gwhalin(1)-介绍及使用

    Memcached是一种广泛使用的分布式内存缓存系统,它能够...通过这篇学习笔记,你应该对gwhalin Memcached Java客户端有了初步了解,接下来可以结合实际项目,深入学习和实践,充分发挥Memcached在高并发场景下的优势。

    java游戏编程初步.doc

    - **Java线程支持**:Java内置了对线程的支持,可以通过`Thread`类或实现`Runnable`接口来创建线程。 - `Thread`类:直接继承`Thread`类并覆写`run()`方法。 - `Runnable`接口:实现`Runnable`接口的`run()`方法,...

    Java-e-luo-s-f-k.rar_K.

    3. **时间管理**:为了实现方块自动下落的效果,我们需要使用定时器(Timer)或线程(Thread)来控制游戏的节奏。Java的javax.swing.Timer类可以方便地实现定时触发事件,或者使用Thread.sleep()方法控制游戏循环的...

    Java教程5-8第二部分

    6. **多线程**:Java支持多线程编程,学习如何创建Thread对象,实现Runnable接口,以及同步机制(如synchronized关键字和wait/notify机制)。 7. **文件和目录操作**:如File类的使用,包括创建、删除、重命名文件...

Global site tag (gtag.js) - Google Analytics