线程是什么?
线程指的是两件不同的事情:
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 InterruptedExceptionpackage 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线程的区别 - **内存占用**: - 进程: 每个进程有独立的地址空间,消耗更多内存。 - 线程: 共享同一进程的地址空间,内存消耗较低。 - **上下文切换成本**: - 进程: 上下文切换成本高。 - 线程: 上...
- **JAVA串讲14-18.doc**:此部分可能涉及了Java的IO流和文件操作,以及线程和并发编程的初步介绍。 - **JAVA串讲19-23.doc**:这部分可能会深入讨论反射机制和泛型的使用,以及一些高级的Java特性。 - **串讲.ppt**...
初步学习Java编程的同学可借鉴,学的比较好的就不用看了
Java线程是编程中的核心概念,尤其是在多任务处理和并发编程中。Java作为一种纯面向对象的语言,其线程模型同样基于面向对象的设计。线程允许程序在同一时间执行多个独立的任务,提高了程序的运行效率。 1. **线程...
14. **Java EE**:简述Java企业版,包括Servlet、JSP、Filter、Listener等Web开发技术,以及MVC设计模式和Spring框架的初步认识。 通过【Java课件_张孝详】中的内容,学习者可以系统性地学习Java编程,逐步提高编程...
5. 注入技术的实现:文中虽然没有给出详细的代码实现,但作者通过描述创建远程线程和注入代码的过程,让我们对注入技术有了初步的了解。根据描述,我们了解到实现远程线程注入通常需要执行以下步骤: - 提升进程...
Java线程是Java编程中的重要概念,它允许程序并发执行多...通过以上讲解,你已经对Java线程有了初步了解,从创建线程到线程同步、通信、管理,以及线程的特殊特性。实践这些知识点,将有助于你在多线程编程中游刃有余。
根据提供的文件信息,文件名为《Java线程(***).pdf》,而内容涉及的是Java多线程编程的相关知识点。由于文件内容包含大量重复的关键词,这很可能是OCR扫描时产生的错误,因此在解读时将会忽略这些重复部分,并尝试...
- Java内置对多线程的支持,可以通过实现Runnable接口或继承Thread类创建线程。 - 线程同步机制包括synchronized关键字、wait(), notify(), notifyAll()方法以及Lock接口。 8. **网络编程**: - Java提供了...
总结,编写一个多线程的Snake游戏,需要理解Java的线程模型,掌握线程的创建、同步和通信,以及GUI编程的基本知识。通过实践,我们可以深入理解并发编程的挑战和解决方案,这对于开发大型、复杂的多用户应用程序至关...
java程序员初学多线程的可以看看哦 csdn积分只要一分哦
本文将深入探讨JAVA单线程时钟算法在JWFD中的应用及其初步设计。 单线程时钟算法是一种用于模拟或控制时间序列的机制,常用于模拟系统、游戏引擎或者任务调度中。在JAVA中,由于其并发特性和线程安全问题,设计一个...
在Java的初步学习阶段,会介绍Java的历史、特点以及与其他编程语言的区别。此外,还会讲解Java的开发环境搭建,包括JDK(Java Development Kit)的安装和配置,以及如何使用IDE(集成开发环境)如Eclipse或IntelliJ...
### Java线上故障分析:线程dump与堆内存分析 #### 引言 在现代软件开发中,Java作为一门广泛使用的编程语言,在企业级应用、Web服务、大数据处理等多个领域发挥着重要作用。然而,随着系统复杂度的提升,线上环境...
1. Java基础:考察应聘者对Java语法、类、对象、接口的理解,以及异常处理、多线程、集合框架等核心概念的掌握程度。 2. 数据结构与算法:可能涉及到数组、链表、栈、队列等基础数据结构,以及排序、查找等算法的...
这将帮助初学者建立Java编程的初步认知。 2. 类与对象:在Java中,一切皆为对象。类是创建对象的蓝图,它定义了对象的属性(成员变量)和行为(方法)。通过实例化一个类,我们可以创建出具有特定属性和功能的对象...
Memcached是一种广泛使用的分布式内存缓存系统,它能够...通过这篇学习笔记,你应该对gwhalin Memcached Java客户端有了初步了解,接下来可以结合实际项目,深入学习和实践,充分发挥Memcached在高并发场景下的优势。
- **Java线程支持**:Java内置了对线程的支持,可以通过`Thread`类或实现`Runnable`接口来创建线程。 - `Thread`类:直接继承`Thread`类并覆写`run()`方法。 - `Runnable`接口:实现`Runnable`接口的`run()`方法,...
3. **时间管理**:为了实现方块自动下落的效果,我们需要使用定时器(Timer)或线程(Thread)来控制游戏的节奏。Java的javax.swing.Timer类可以方便地实现定时触发事件,或者使用Thread.sleep()方法控制游戏循环的...
6. **多线程**:Java支持多线程编程,学习如何创建Thread对象,实现Runnable接口,以及同步机制(如synchronized关键字和wait/notify机制)。 7. **文件和目录操作**:如File类的使用,包括创建、删除、重命名文件...