JAVA之多线程程序设计

JAVA多线程详解(超详细) 程序:开发写的代码称之为程序。程序就是一堆代码,一组数据和指令集,是一个静态的概念。进程(Process):将程序运行起来,我们称之为进程。进程是执行程序的一次执行过程,它是动态的概念。进程存在生命周期,也就是说程序随着程序的终止而销毁。进程之间是通过TCP/IP端口实现交互的。线程(Thread):线程是进程中的实际运作的单位,是进程的一条流水线,是程序的实际执行者,是最小的执行单位。通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程。线程是CPU调度和执行的最小单位。注意。 阅读详情

构造线程类的方法:通过构造类java.lang.Thread的子类,另一种是通过构造实现接口java.lang.Runnable的类;前者即使后者的一个实现。

编写线程程序

通过类java.lang.Thread的子类构造线程(类java.lang.Thread的每个实例对象就是java的一个线程)。构造java.lang.Thread子类的主要目的是为了让线程类的实例对象能完成线程程序所需要的功能。编写子类的时候需要覆盖掉父类的run方法,在run()方法中包含线程所要执行的代码。public void run();启动或者运行线程调用类java.lang.Thread的start()方法。

public static void sleep(long milis) throws InterruptedException 该成员方法使得当前的线程进入睡眠状态。睡眠的时间由sleep的参数决定,由于成员sleep会抛出异常,所以需要进行异常处理。

public static double random() 返回一个大于0且小于1的随机数。

通过接口java.lang.Runnable构造线程,因为java构造线程是在构造过程中可能出现的多种继承的一种解决方案。

一般语法:

public class A extends B implements Runnable(){

//类的其他部分

public void run(){成员方法run的方法体}//类的其他部分}

extends B 非必需,视情况而定。

使用实现java.lang.Runnable接口的A后,构造和启动线程的方法是:

A a = new A(); Thread t = new Thread(a); t.start();

类java.lang.Thread的构造方法:public Thread(Runnable target);用这个方法构造类java.lang.Thread的实例化对象。

然后通过public void start()启动创建的新线程。

后台线程(又称为守护线程或者精灵线程):只有后台线程运行时,程序就会退出。默认线程是用户线程,可以通过类java.lang.Thread的成员方法public final boolean isDaemon()来判断一个线程是用户级线程还是后台线程。是后台,则返回true;不是则为false。可以把线程在用户线程和后台线程进行切换,通过类java.lang.Thread的方法:

public final void setDaemon(boolean on) 此方法必须在public void start()调用之前,否则将会在运行时出现java.lang.IllegalThreadStateException类型异常。若setDeamon的参数为true,置为后台线程,else 为用户线程。

线程组

线程可以通过线程组来进行管理,线程组是指一些线程和线程组的集合。线程组形成了一个树状的体系结构,除了树状根部的线程组之外,每个线程组都有一个父线程组。一个线程的父线程组就是包含了该线程组的线程组。

构造线程组可以用类java.lang.ThreadGroup的两个构造方法。

1.public ThreadGroup(String name),name用来指定线程组的名称。这时所构造出来的线程组是当前线程所在的线程组。

2.public ThreadGroup(String parent,String name)parent指父线程组,name指新构造出来的线程组。

将一个线程添加到一个线程组中一般是在创建线程时通过线程的构造方法的参数指定线程组,例如,类java.lang.Thread的构造方法 public Thread(ThreadGroup group,String name)的参数group指定所要添加的线程组,name指定新创建的线程的名称。

一个线程所允许的最大的优先级与该线程所在的线程组的所允许的是最大的优先级一样。

public final void setMaxPriority(int pri)用来给线程组设置最大的优先级,不能低于1,不能高于10(优先级的极限)。

同步语句块

类对象和实例化对象不是一个对象,进程同步时,实例化对象的锁不会影响到类对象的锁。

同步语句块的定义格式:synchronized(引用类型的表达式):(这里可以理解使用this和下面语句1的区别)

其中关键字synchronized是同步语句块的引导词;位于()内的表达式必须是引用类型的表达式,指向类对象或者实例化对象;语句块则由一对{}及这对大括号所括起来的一系列语句组成。在小括号内调用的对象,若没有被锁住,则Java虚拟机会让线程进入并运行同步语句块,同时引用类型的表达式所指向的对象锁就会锁住,当其退出同步语句块时,锁就会自动打开。

在同步语句块中,要让引用类型的表达式所指向的的对象为类对象可以通过java.lang.Class的静态方法:

public static Class forName(String className) throws ClassNotFoundException;className指定类或接口的名称,返回值即为指定的类或接口所对应的类对象的引用值。例如:Class t = Class.forName("java.lang.Thread")使得变量t的值为java.lang.Thread类对象的引用值。synchronized(Class.forName("类名"));.······1

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

基于Pthreads多线程程序设计 函数原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);功能说明:创建一个线程。参数说明thread:线程句柄,需要先定义一个 pthread_t 类型变量 thread,将该变量的地址 &thread 传递到该参数中去。这是一个传出参数,传递进去的 thread 会得到系统为我们创建好的线程句柄。attr:attr可以。 阅读详情

相关推荐

多线程应用程序设计 报告

多线程应用程序设计

Java 多线程设计模式

安全性:不损坏对象不安全是指,对象的状态处于非预期状态,比如账户余额变成了负值生存性:进行必要的处理生存性是指:程序能正常运行,可进行必要的处理,影响生存性的典型问题有出现死锁复用性:可再利用类复用性是指代码重用,若复用性好,可减少大量重复代码性能:能快速,大量进行处理性能有两个方面的考虑因素:吞吐量和响应性,客户端程序比较重视响应性,服务端程序更重视吞吐量,吞吐量是指单位时间内完成的任务,响应性是指提交任务后多长时间内能收到程序的反馈。

假装你是大灰狼的专栏 814

Java多线程程序设计

Java多线程程序设计

Java程序设计——多线程

一、多线程的概念 1.进程 ——在一个操作系统中,每个独立执行的程序都可称之为一个进程,也就是“正在运行的程序”。 ——目前大部分计算机上安装的都是多任务操作系统,即能够同时执行多个应用程序。 ——在计算机中,所有的应用程序都是由CPU执行的,对于一个CPU而言,在某个时间点只能运行一个程序,也就是说只能执行一个进程。 2.线程 ——每个运行的程序都是一个进程,在一个进程中还可以有多个执行单元同时运行,这些执行单元可以看做程序执行的一条条线索,被称为线程。 ——操作系统中的每一个进程中都至

Mr_John 2536

多线程应用程序设计

多线程应用程序设计

从FPGA/ASIC工程师视角看DDR:手把手拆解Memory Controller、PHY与DRAM芯片的协作流程

本文从FPGA/ASIC工程师视角深入解析DDR内存子系统,详细拆解Memory Controller、PHY与DRAM芯片的协作流程。通过系统架构分解、接口标准解析和实战调试技巧,帮助工程师优化DDR性能并解决常见问题,涵盖地址映射、命令调度、时序校准等关键技术要点。

weixin_42548888的博客 457

一篇搞懂Java多线程(全网最细)

Java多线程是一种强大而有趣的编程概念。它允许程序同时执行多个任务,就像一个宏大的交响乐团。每个线程都是一个独立的执行路径,有自己的速度和优先级。那么,我们期待多线程能给我们带来什么呢?

让优秀成为一种习惯! 1万+

AURIX-TC3xx-GTM详解六-DPLL(Digital PLL Module)-寄存器1-DPLL寄存器

主要有下图这些寄存器2、

m0_69929716的博客 438

JAVA程序设计-多线程计算

JAVA语言程序设计-多线程计算程序 ComputeThread package practise; public class ComputeThread1 extends Thread{ //int step = 0; double sum = 0;//储存和 static int i = 0;//储存进度 static String stringSum="";//储存和的字符串 s...

BigEastmelon的博客 353

实例讲解CANoe报文解析使用方法

在日常工作中,经常需要分析车辆产生故障的原因,在电动汽车中,分布式控制器及线束在其中某一个地方出现问题,就有可能造成车辆故障,但是由于电气零件无法直观的观察到哪个部位发生了故障,所以要借助工具测量电气变量或者采集报文信息通过分析,解析出故障原因,从而为车辆的开发,测试,维修提供支持。其中汽车行业最通用的通讯方式就是CAN通讯,本文针对使用CANoe对CAN报文离线分析的使用方法做详细介绍。

qq_43011586的博客 1万+

(五)C++自制植物大战僵尸游戏LoadingScene的实现讲解

游戏启动后就会立即切换到游戏加载场景中。只有游戏资源文件加载完成后,才能进入游戏。Loadingscene类继承Cocos2d-x中的Scene父类,表明Loadingscene是一个场景类。切换到LoadingScene场景中,首先会创建该场景,会调用函数,在该函数中调用自己定义的方法实现指定功能。代码文件的位置如下图所示。

尔灵尔亿的博客 2006

多线程和并行程序设计(Java)

多线程和并行程序设计 多线程使得程序中的多个任务可以同时执行。 Java的重要功能之一就是内部支持多线程。多线程值在同一个程序中允许同时运行多个任务。在其它许多程序设计语言中,是通过调用依赖于系统的过程或者函数来实现多线程。 线程的概念 线程是指一个任务从头到尾的执行流程。一个程序可能包含多个可以同时运行的任务。 线程提供了运行一个任务的机制,对于 Java 而言,可以在一个程序中并发地启动多个线...

peabits' Web Log 958

材料力学数值方法:细观力学模拟:材料断裂与损伤的细观模拟_2024-08-05_16-13-13.Tex

弹性理论是材料力学的一个重要分支,主要研究在外部载荷作用下,材料如何发生弹性变形以及如何恢复原状。这一理论基于连续介质力学,将材料视为由无数连续点组成的连续体,每个点都遵循一定的力学规律。弹性理论的核心是胡克定律,它表明在弹性范围内,应力与应变成正比关系。损伤变量ddd通常定义为0到1之间的值,其中d0d=0d0表示材料未损伤,d1d=1d1表示材料完全损伤。损伤变量可以基于不同的物理量定义,如裂纹密度、孔隙率或微观缺陷的分布。

937

java多线程程序设计一、简单多线程的实现

为什么80%的码农都做不了架构师?>>> ...

weixin_34341117的博客 134

RK3568平台(USB篇)USB基础知识

现象:把USB设备比如Android手机接到PC答1:是USB控制器,是USB控制器内嵌的root hub.答2. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone"提示你安装的是"设备驱动程序"。USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序。答3. PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低电平USB设备的USB口内部,D-或D+接有1.5K的上拉电阻;

weixin_49303682的博客 1658

15、z/OS 优化配置与迁移实践

本文详细探讨了z/OS环境的优化配置与迁移实践,涵盖DASD存储库管理、用户目录更新、环境更新意义以及不同场景下的迁移案例。通过单笔记本系统和服务器级机器的实例,展示了迁移流程和关键要点,包括DASD文件创建、设备映射更新、系统重启初始化以及数据备份等步骤。文章还总结了迁移过程中的注意事项,并展望了未来z/OS优化的发展趋势,为z/OS系统的稳定运行和高效管理提供了实用指导。

zzz56的博客 129

《Java面向对象程序设计》学习笔记——第 15 章 Java 多线程机制

第 15 章 Java 多线程机制 Java 语言的一大特点就是内置了对多线程的支持。多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况。我们感觉线程正在同步执行,但并不是真的同时执行多个线程,只是Java 快速地从一个线程切换到另一个线程。Java 虚拟机( JVM )负责管理线程。

奇妙方程式的博客 2652

Python爬虫实战:社交媒体热点事件追踪与情感分析可视化

本文探讨了如何利用Python爬虫技术从微博和Twitter等社交媒体平台抓取数据,进行热点事件追踪和情感分析,并通过可视化方式展示舆论情感变化。文章详细介绍了最新的爬虫技术、数据处理方法和可视化实现,提供了完整的代码示例,帮助读者构建自己的社交媒体分析系统。关键词:Python爬虫、社交媒体分析、情感分析、数据可视化、热点追踪爬虫框架:Requests-HTML、aiohttp、Twint(Twitter专用)数据处理文本处理:Jieba(中文分词)、NLTK(英文处理)情感分析。

2201_76125261的博客 1104

实验十 Java多线程程序设计(一)

实验十 Java多线程程序设计(一) 一、实验目的 掌握Java多线程程序设计方法。 二、实验内容 上机实现下列程序并观察程序的运行情况: 编写线程程序,在新线程中完成计算某个整数的阶乘。分别用Thread类和Runnable接口实现。 三、实验要求(必做实验,2学时) 掌握Java多线程的创建和使用。 掌握Java多线程同步技术;理解产生死锁现象的原因,学习如何避免死锁。 实验结果、发现和总结 Thread类: /** * @program: Chapter_12 * @desc.

weixin_51210860的博客 622

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

浅谈Java多线程程序设计初步详细流程

<br />  浅谈Java多线程程序设计初步详细流程,在Java语言产生前,传统的程序设计语言的程序同一时刻只能单任务操作,效率非常低,例如程序往往在接收数据输入时发生阻塞,只有等到程序获得数据后才能继续运行。随着Internet的迅猛发展,这种状况越来越不能让人们忍受:如果网络接收数据阻塞,后台程序就处于等待状态而不继续任何操作,而这种阻塞是经常会碰到的,此时CPU资源被白白的闲置起来。如果在后台程序中能够同时处理多个任务,该多好啊!应Internet技术而生的Java语言解决了这个问题,多线程程序是J

sh_massage的专栏 663

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

《Java程序设计》实验报告——Java的多线程机制

浙江理工大学 《Java程序设计》 实验报告 20 19~20 20学年第 1学期 学 院 信息学院 班 级 计算机科学与技术18(3) 姓 名 申屠志刚 学 号 2018329621200 ...

无限迭代中...... 3876

JAVA实验五 多线程程序设计

实验目的: 理解多线程的概念,掌握创建、管理和控制 Java 线程对象的方法,包括创建 Java 线程对象、改变线程状态、设置线程优先级及控制线程调度等方法,掌握实现线程互斥和线程同步的方法。 实验内容: 1、编写一个有两个线程的程序,第一个线程用来计算1~100之间的偶数及个数,第二个线程用来计算1-100之间的偶数及个数。 (1)源代码 package experiment; class countNum extends Thread { private int first,end,count=0;

努力学习的小菜同学 2691

java教学做一体化教程_Java程序设计教学做一体化教程第10章多线程

Java程序设计教学做一体化教程第10章多线程 注意:开始用功了 !1 页配合 例子源代码一起使用Power point 制作:耿祥义 张跃平多线程 《 Java程序设计教学 做 一体化 教程 》 第 10章主要内容3 页10.1 Java中的线程 10.1.1核心知识 _11. 操作系统与进程进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程。操作系统可以同时管理计算...

weixin_29459473的博客 194

Java多线程程序设计初步

<br /><br /> Java多线程程序设计初步<br /> <br /> 线程的创建<br /> <br />  我们知道Java是面向对象的程序语言,用Java进行程序设计就是设计和使用类,Java为我们提供了线程类Thread来创建线程,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。下面是一个创建启动一个线程的语句:<br /> <br />线程的创建<br /> <br />  我们知道Java是面向对象的程序语言,用Java进行程序设计就是设计和使用类

BubbleKitty的小園 588

【Java程序设计】多线程基础

一、线程的概念 (1)进程 (2)线程 二、线程的创建 (1)Thread (2)Runnable 三、线程间的数据共享 四、多线程的同步控制

PKM of bk 730
上一篇: JAVA学习之注释
下一篇: JAVA之泛型
Linux修炼
博客等级 码龄9年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值