一:多线程
一个进程中又可以包含一个或多个线程,一个线程就是一个程序内部的一条执行线索,
如果要一个程序中实现多段代码同时交替运行,就需产生多个线程,并指定每个线程上所
要运行的程序代码段,就是多线程。
二:单线程实例:
class TestThread
{
public void run(){
while(true){
System.out.println("run():"+Thread.currentThread().getName());
}
}
}
class ThreadDemo1
{
public static void main(String[] args){
new TestThread().run();
while(true){
System.out.println("main():"+Thread.currentThread().getName());
}
}
}
三:多线程实例:
class TestThread extends Thread
{
public void run(){
while(true){
System.out.println("run():"+Thread.currentThread().getName());
}
}
}
class ThreadDemo1
{
public static void main(String[] args){
new TestThread().start();
while(true){
System.out.println("main():"+Thread.currentThread().getName());
}
}
}
注: main()和run()代码交替执行,在main()返回线程名为main,run()返回线程名为Thread-0
四:用thread类创建线程
1.要将一段代码在一个新的线程上运行,该代码应该在一个类的run函数中,并且run函数所在的类是Thread类的子类。
2.启动一个新的线程,我们不是直接调用Thread的子类对象的run方法,而是调用Thread子类对象的start()方法。Thread
类对象的start()方法将产生一个新的线程,并且在该线程上运行该Thread类对象中的run()方法。
五:后台线程
1.如果我们对某个线程对象在启动(调用start()方法)之前调用了setDaemon(true)方法,这个线程就变成了后台线程。
2.前台多线程实例:
class TestThread extends Thread
{
public void run(){
while(true){
System.out.println("run():"+Thread.currentThread().getName());
}
}
}
class ThreadDemo1
{
public static void main(String[] args){
new TestThread().start();
}
}
注:只要还有一个前台线程在运行,整个进程都不会结束。
3.后台多线程实例:
class TestThread extends Thread
{
public void run(){
while(true){
System.out.println("run():"+Thread.currentThread().getName());
}
}
}
class ThreadDemo1
{
public static void main(String[] args){
Thread tt = new TestThread();
tt.setDaemon(true);
tt.start();
}
}
注:只要还有一个前台线程在运行,这个线程就不会结束,如果一个进程中只有后台线程运行,这个进程就会结束。
六:使用Runnable接口创建多线程
1.适合多个相同程序代码的线程去处理同一个资源的情况,把虚拟CPU(线程)同程序的代码、数据有效分离。
2. 四个线程共卖1000张票
class TestThread implements Runnable
{
int tickets = 1000;
public void run(){
while(true){
if(tickets>0){
System.out.println(Thread.currentThread().getName() +" is saling ticket" +tickets--);
}
}
}
}
class ThreadDemo1
{
public static void main(String[] args){
TestThread tt = new TestThread();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
}
}
七:线程同步
class TestThread implements Runnable {
int tickets = 200;
String str = new String("");
public void run(){
while(true){
synchronized(str){
if(tickets>0){
try{
Thread.sleep(10);
}catch(Exception e){
}
System.out.println(Thread.currentThread().getName() +" is saling ticket" +tickets--);
}
}
}
}
}
class ThreadDemo1
{
public static void main(String[] args){
TestThread tt = new TestThread();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
}
}
分享到:
相关推荐
Java多线程笔记 Java多线程笔记是 Java 编程语言中关于多线程编程的笔记,涵盖了线程基础知识、线程优先级、线程状态、守护线程、构造线程、线程中断等多方面的内容。 获取简单 main 程序中的线程 在 Java 中,...
以下是对马士兵多线程笔记的详细解析。 1. **多线程基础**:多线程是指一个应用程序中同时执行多个线程(即任务)的能力。这种并发执行可以提高系统资源的利用率,提升程序的响应速度和执行效率,特别是在多核...
Java线程的知识点总结。doc
多线程笔记
以下是对"C#多线程笔记"中可能包含的知识点的详细解释。 1. **线程基础**: - **什么是线程**:线程是程序执行的最小单元,每个进程至少有一个线程,负责执行程序代码。 - **主线程与子线程**:主线程是程序的...
通过阅读`多线程笔记.doc`和运行`threadDemo`示例代码,你可以对Java多线程有更深入的理解,并能够在实际项目中灵活运用这些知识,解决并发问题。同时,博客地址提供了更多详细内容,可以帮助你进一步探索和实践。
java多线程笔记分享
10.8-10.9马老师多线程笔记synchronized .md
### Python3多线程知识点详解 #### 一、线程基础 **线程状态** 在探讨Python3中的多线程之前,我们首先需要理解线程的基本状态及其转换过程。 - **新建**: 当一个线程被创建后,它最初处于新建状态。 - **就绪**...
本篇笔记将深入探讨C#多线程的基本概念、操作方法以及注意事项。 首先,我们要理解多线程的基本概念。线程是程序执行的最小单位,每个线程都有自己的执行路径和栈空间,但它们共享同一块堆内存。因此,线程间的通信...
### C#多线程知识点详解 #### 一、线程与窗体间的交互 在C#编程中,每个窗体通常都运行在一个独立的线程上。这意味着如果一个应用程序包含多个窗体,那么这些窗体将分别运行在各自的线程之上。当需要实现不同窗体...
Java多线程是Java编程中不可或缺的部分,它允许程序同时执行多个任务,从而提升程序的效率和CPU的利用率。在Java中,线程是程序执行的最小单位,而进程则是资源分配的基本单位。一个进程可以包含一个或多个线程,...
马士兵是一位知名的IT教育专家,他的多线程训练营笔记深入浅出地讲解了这一主题,帮助开发者理解并掌握多线程的精髓。 多线程允许一个程序中有多个执行流同时运行,这样可以提高应用程序的效率和响应性。在Java中,...
在Java编程语言中,多线程是程序设计中的一个重要概念,尤其在开发高效能和响应迅速的应用时。本文档将全面解析多线程的基础知识,从简单到复杂,帮助开发者深入理解并掌握这一核心技术。 一、多线程基础 1.1 线程...
### 数据流和多线程知识点总结 #### 一、数据流概述 数据流(Stream)在计算机编程领域中,指的是数据传输的一种模式。通常用于描述数据的输入与输出过程。在Java语言中,数据流是一种非常重要的机制,主要用于...
Java多线程详解 在Java编程中,多线程是一种重要的技术,它使得程序能够同时执行多个任务,提高系统的效率和响应性。本教程将详细讲解Java中的多线程概念,包括线程的创建、状态、同步以及高级主题,旨在帮助初学者...