`
roway
  • 浏览: 50427 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

第二十四:多线程

 
阅读更多

一.

什么是线程
a.线程是一个程序内部的顺序控制流
b.线程和进程
1.每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大
2.线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(pc),线程切换的开销小
3.多进程:在操作系统中能同时运行多个任务(程序)
4.多线程:在同一应用程序中有多个顺序流同时执行
自己去了解并发执行和并行执行!!!

调用线程的start方法是开启一个线程。而直接调用线程的run方法是直接运行方法,而不是开启线程

public class MyThread extends Thread {

	@Override
	public void run() {
		for (int i = 0; i < 10; i++) {
			System.out.println("Thread executed:" + i);
		}
	}

	public static void main(String[] args) {
		MyThread thread = new MyThread();
		thread.run();//直接调用方法,相当于调用一个普通类的方法
		System.out.println("---------------------------");
		//thread.start();//启动一个线程的一个方法
	}
}


二.

创建一个线程的两种方法:

1.继承Thread类

public class MyThread2 {
	public static void main(String[] args) {
		Thread1 t1 = new Thread1();
		Thread2 t2 = new Thread2();

		t1.start();
		t2.start();
	}
}

class Thread1 extends Thread {
	@Override
	public void run() {
		for (int i = 0; i < 10; i++) {
			System.out.println("hello:" + i);
		}
	}
}

// 继承Thread类创建线程
class Thread2 extends Thread {
	@Override
	public void run() {
		for (int i = 0; i < 10; i++) {
			System.out.println("world:" + i);
		}
	}
}


2.实现Runnable接口

public class MyThread3 {
	public static void main(String[] args) {
		Thread3 tr3 = new Thread3();
		Thread4 tr4 = new Thread4();
		Thread t3 = new Thread(tr3);
		Thread t4 = new Thread(tr4);
		t3.start();
		t4.start();
	}
}

// 实现Runnable接口创建线程
class Thread3 implements Runnable {
	public void run() {
		for (int i = 0; i < 10; i++) {
			System.out.println("hello:" + i);
		}
	}
}

class Thread4 implements Runnable {
	public void run() {
		for (int i = 0; i < 10; i++) {
			System.out.println("world:" + i);
		}
	}

}



分享到:
评论

相关推荐

    第二十一讲 Java中的多线程编程.doc

    Java 中的多线程编程 Java 中的多线程编程是指在一个程序中可以同时执行多个线程,以提高程序的执行效率和响应速度。多线程编程可以将一个大的任务分解成多个小的子任务,每个子任务可以独立执行,从而提高程序的...

    java多线程详解

    ### Java多线程详解:深度探索Java线程机制 #### 知识点一:线程与进程的区别 在深入探讨Java多线程之前,我们首先需要理解线程与进程的基本概念及其区别。进程是资源分配的基本单位,拥有独立的内存空间,而线程...

    Java多线程编程核心技术_完整版_java_

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要通过继承Thread类或实现Runnable接口来实现。本教程《Java多线程编程核心技术》将...

    C++11 多线程

    在**C++11** 之前,尽管可以通过第三方库如Boost.Thread实现多线程编程,但这些解决方案通常不够直观,也不够标准化。随着**C++11** 的发布,标准库中包含了针对多线程编程的新组件,使得编写多线程应用程序变得更加...

    多线程单例模式并发访问

    #### 二、多线程与CPU交互机制 在多线程环境中,线程与CPU之间的交互机制非常重要。线程间的资源竞争导致了线程调度的重要性。操作系统通过调度算法来决定哪个线程获得CPU时间片,从而实现多线程程序的高效运行。 -...

    VC中多线程10个详细例程

    本文将详细介绍 VC 中多线程编程的十个详细例程,旨在帮助读者深入理解多线程编程的奥妙。 一、问题的提出 在编写一个耗时的单线程程序时,我们发现程序会出现“死机”的情况,即程序在执行某个任务时,不再响应...

    java教程-每日一课,27天java从入门到进阶

    精品java学习教程,原理讲解+源码实战 27天实现java从入门到进阶 第一天:语言环境 第二天:常量变量 第三天:流程控制 ...第24天:多线程深入 第25天:GUI 第26天:网络变成 第27天:反射和设计模式

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

    JAVA-微讲堂01环境变量-陈冬

    讲:陈冬 第一课:计算机中的环境变量 第二课:认识JVM 安装JDK 第三课:认识JAVA中的变量 第三课:理解类与对象 第三课附加:值传递和对象...第十课:多线程 第十一课:socket 第十二课:jdbc 第十三课:设计模式

    concurrent 多线程 教材

    24 实现 Java 多线程并发控制框架.mht 25 多线程、多平台环境中的跟踪.mht 26 使用 ConTest 进行多线程单元测试.mht 27 实现非阻塞套接字的一种简单方法.mht 28 基于事件的NIO多线程服务器.mht 29 驯服 Tiger ...

    孙鑫C++教程(全20讲)PPT讲义源码及电子书

    最近正在学习C++,费了很多心思,分亨一下我的学习资源,孙鑫C++教程(全20讲)PPT讲义源码及电子书资源包括三部分 ...第二十课:HOOK和数据库访问 希望对大家的学习有帮助,如果不错,请帮点个赞,谢谢

    LabWindows™CVI中的多线程技术 - National Instruments.pdf

    #### 十四、额外的多线程技术资源 对于想要深入了解多线程编程技术的开发者来说,可以从以下几个方面寻找资源: 1. **官方文档**:LabWindows/CVI的官方文档提供了详尽的多线程编程指南和技术说明。 2. **社区论坛...

    公开课第二节:大厂常见算法题深度解析.mp4

    公开课第二节:大厂常见算法题深度解析.mp4 公开课第三节:浅谈测试的职业发展与破局.mp4 公开课第四节:软件测试人员面试的技巧和互联网大厂真题分享.mp4 公开课第五节:测试管理的那些事儿.mp4 公开课第六节:自动...

    mfc编程 第一到十章

    本教程是ppt格式,适合初学mfc的编程,...第二章:对话框与控件 第三章:菜单与控制条 第四章:图形操作 第五章:文档和视 第六章:文档操作 第七章:mfc 通用类 第八章:异常处理 第九章:多线程 第十章:数据库编程

    北大青鸟S2 C#课件

    北大青鸟C#课件 完备课件 可提供给研究C#的初学者使用 也可提供给教学使用 适合相互学习 以及知识点总结 ...第十章节:多线程 第十一章节:数组和集合对象 第十二章节:C# 中的文件处理 注:参与评论返还积分

    公开课第四节:软件测试人员面试的技巧和互联网大厂真题分享.mp4

    公开课第二节:大厂常见算法题深度解析.mp4 公开课第三节:浅谈测试的职业发展与破局.mp4 公开课第四节:软件测试人员面试的技巧和互联网大厂真题分享.mp4 公开课第五节:测试管理的那些事儿.mp4 公开课第六节:自动...

Global site tag (gtag.js) - Google Analytics