Java基础--第二十三天

多线程:         多条执行单元

进程:正在运行的应用程序

线程:进程的执行单元,一条执行路径

迅雷下载,360清理

多线程程序实现:

线程依赖于进程存在,Thread类

子类继承

子类重写run方法

调用strart(),让线程启动,调用run()方法

同一个线程对象连续两次启动,报错:表示该线程状态有问题

getName()方法:标志不同线程,获取线程名称

setName():更改线程名字

线程随机性:

程序执行,抢占CPU资源,CPU在多个程序间切换。

第二种实现:

创建类,实现Runnable接口

重写run方法

创建类的实例

把类的实现作为Thread的构造参数,创建Thread对象引用

Thread.currentThread().getName()

优势:

避免了单继承的局限性;

实现接口的方式只创建一次,更好的实现了数据与操作的分离。

买票代码:

A:共享数据;两种方式;

B:卖出负数,卖出相同票--解决问题方式

【线程的随机性和延迟性】

找问题出处:

A:看有没有共享数据;

B:看共享数据的操作是不是多条语句;

C:看是不是在多线程程序中

解决:把满足条件的代码锁在一起  synchronized

锁对象:同步代码块的锁是任意对象

同步方法:把锁就在方法上---线程安全问题

this对象

静态方法:类名.class   Class【字节码文件】类型的对象

死锁

被同步的代码越少越好,建议使用同步代码块

若一个方法全部被同步了,就用同步方法

线程间的通信:

学生信息录入与输出:多线程随机性

录入一个,输出一个---同一个

学生 信息录入  信息获取  集中测试类

时间: 2024-11-01 11:18:13

Java基础--第二十三天的相关文章

复习java基础第二天(异常处理)

一.常见的异常类型: public class TestException { public static void main(String[] args) { int i = 10; //数学异常: java.lang.ArithmeticException int j = i / 0; System.out.println(j); int [] scores = new int[]{1, 2, 4, 5}; //数组下标越界异常: java.lang.ArrayIndexOutOfBound

Java基础--第二十五天

TCP协议: Socket类 构造方法: TCP程序,必须先开服务器端 成员方法 服务器端程序: 创建服务器端Socket对象: 监听连接: 获取输入流,并显示: 释放资源 ServerSocket类 网络编程 网络编程+反馈 大融合[所有的Java基础融合为一个实例] 正则表达式: 符合某种规则的字符串,常用于校验 规则: Pattern类 A:字符 x:任意字符表示任意字符本身 \\:反斜线字符[转义字符] \r:回车 \n:换行 B:字符类 [abc]:表示a,b,c任意字符一次 [^ab

Java基础--第十三天

讲课流程: API的使用: 1,Scanner的应用 两次录入:  int -----int : String --- String:\r\n是结束标识符 String --- int: int ----- String:不正常[2]   与String --- String有点理解不过来 1,sc重新赋值: 2,两次录入String类型,对第一个进行转换 * /* \r\n是在String中是结束标识符:但是在录入的开始并没做换行符录入的区别: 先输int,\r\n是结束标识符,但是没有纳入i

Java基础--第二十六天

正则表达式的规则字符: A:字符 x 字符 x,任意字符代表自己本身. \\ 反斜线字符 \r      回车 \n     换行 B:字符类 [abc] a.b 或 c,任意字符一次. [^abc] 任何字符,除了 a.b 或 c [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内 [0-9] 任意的数字字符一次 C:预定义字符类 . 任意的字符 \d 数字:[0-9] \w 单词字符:[a-zA-Z_0-9] 单词字符:英文,数字,及_ D:边界匹配器 ^ 行的开头 $ 行的结

Java基础 - 第二天 Eclipse、运算符、Scanner类

第1章    Eclipse 1.1     Eclipse概述 l 概述 Eclipse是一个专门针对Java的集成开发工具(IDE),是IBM公司的产品.是免费.开源.由Java语言编写.所以,需要有JRE运行环境并配置好环境变量.它可以极大地提升我们的开发效率.可以自动编译,检查错误.在公司中,使用的就是Eclipse进行开发. l 特点描述 n 免费 n 纯Java语言编写 n 免安装 n 扩展性强 l 下载和安装 n 下载 http://eclipse.org/ n 安装 绿色版 解压

Java基础第二十九天总结——Java8新特性

目录: 一.Lambda表达式 二.函数式(Functional)接口 三.方法引用于构造器引用 四.强大的Stream API 五.Optional类 /*--------------------------分割线---------------------------*/ 一.Lambda表达式 速度更快 代码更少(增加了新的语法:Lambda 表达式) 强大的 Stream API 便于并行 最大化减少空指针异常:Optional Nashorn引擎,允许在JVM上运行JS应用 Lamdba

java基础第十三天IO接口

1.阐述BufferedReader和BufferedWriter的工作原理, 是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明? 答: BufferedReader:从字符输入流读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取: BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符.驻足和字符串的高效写入:缓冲区读写器的性能恒大于非缓冲区读写器的性能. 2.阐述HashSet与HashMap的异同. 答: HashSet:HashSet

java基础第二天

1.变量:存数的,代词,指代的就是它所存的那个数 1)变量的声明 int a://声明一个整形变量,名为a int b,c,d;//声明三个整形变量,名为b,c,d 2)命名 2.1)只能包含字母,数字,_和$符,并且不能以数字开头 2.2)严格区分大小写 2.3)不能使用关键字 2.4)可以中文命名,但不建议 建议“见名知意”驼峰命名法 3)初始化:第一次赋值 3.1)声明的同时初始化: int a = 250;//声明整形变量a并赋值为250 3.2)先声明后初始化: int a ://声明

JAVA学习第二十三课(多线程(二))- (多线程的创建方式二 :实现Runnable接口(常用))

当一个类有父亲,但是其中的功能还希望实现线程,那么就不能采用继承Thread的方式创建线程 那么就可以通过接口的方式完成 准备扩展Demo类的功能,让其中的内容可以作为线程的任务执行 实现Runnable接口,Runnable接口中只有一个方法run 一.创建线程的第二种方法 Runnable的出现仅仅是将线程的任务进行了对象的封装 /* * 创建线程的第二种方法 * 1.定义类实现Runnable接口 * 2.覆盖接口中的fun方法,将线程的任务代码封装到run方法中 * 3.通过Thread