day--27 Java线程

黑马毕向东Java课程笔记(24-1,又从35天的day27-17开始——27-24):网络编程练习——上传图片、多线程访问服务端、 注意,局域网中IP地址在网络重连之后可能会改变,注意如果客户端与服务端无法连接,就测试一下是不是IP地址改变 1、练习2   TCP-上传图片——一个客户端对一个服务器发送图片! 首先是客户端 --------------- package pack; import java.net.*; import java.io.*; public class PicClient { publi... 阅读详情

线程

====================================

*进程 

  在操作系统中,并行执行的任务


*线程

在进程内部并行执行的任务

*线程作用:

*)将大任务,切分为多个并行的子任务

以提高执行效率

*)阻塞的代码要并行执行.



*java 创建线程的两种方式

继承Thread

实现Runable接口 创建对象 r包含一段可以被线程执行的代码


Thread t1=new Thread(r);

//线程执行后执行的r.run();

t1.start()


*线程调度器

负责时间片的分配.

*)线程间是竞争关系


*)线程状态 

new---->(Start())runable 可执行等待状态----->进入run(running)方法可以阻塞(block).---->run方法结束线程消亡(dead)

消亡后不能重新启动该线程.


线程调度方法

=============================

yeild() 当前线程让出cpu

sleep() 当前线程暂停


getPriority()

setPriority(int newPriority)

优先级,1-10, 默认5

优先级高,获胜机会越多.

反之亦然.


isDaemon()

setDaemon(boolean b)

守护线程,后台线程,精灵线程 *前台线程或虚拟机退出自动退出


b.join 使用另一个线程b的执行结果



interruput()打断一个线程的执行 InterruptedException


多线程共享数据

====================================

*一个线程正在修改数据,另一个线程同事访问数据.

synchronized

==================================

*同步

*一个线程执行到sychromized代码块时,必须得到一个同步锁,才能执行.


*非静态的同步方法

必须获得当前对象的锁

*静态的同步方法

获得*类对象*的锁(任何类只有一个锁)


*同步代块


synchromized(对象 ,)

{

同步代码块

}


获得指定的锁

1)this code可能被同时执行

2)类对象

3)正在访问的数据对象

*synchronized 保证多线程共享数据时数据安全

线程安全 
线程不安全 线程安全

StringBuilder StringBuffer

ArrayList Vector 

HashMap HashTable
* synchronized 效率低

======================================================

*****生产者和消费者问题*******

*一种线程间的通信机制

*一个线程产生数据并放入集合另一个线程取数据


等待和通知

==================================================

Object 的方法

wait(),

当前线程在被调用的对象上等待(厨师在盘子上等待)

notify()

通知所有等待线程中的一个

notifyAll()

通知所有等待的线程

*)wait() 外面总是一个循环判断以防恶意线程敲盘子

*)等待通知方法外面必须有synchorized (测试代码在方法中没有,在调用处有.)


线程本地共享(绑定)

=====================================

*在当前线程上可以绑定一个数据,当执行到后面组件代码时,可以从当前线程获得数据


ThreadLocal

------------------------------------------------------------

Set(数据) 在当前线程绑定数据

get() 从当前线程获取数据

remove() 从当前线程移除数据










.

智能制造 | 如何快速自动生成站位表及自动与BOM校验? 一、站位表(SMT行业中)是SMT上料防错的基础信息,用于对需上料物料与产线、贴片机位置、飞达规格型号、用量,建立基础资料。 SMT站位表是否正确? 首先需要人工确认站位表与SMT程序的是否符合,上料员依照站位表安装好后,确认人员需有第三方确认者 (品管确定)核对。 站位表内容包括什么? 站位表内容为:SMT站位号相对应的物料编码,元件位号,飞达大小/间距,数量等等,根据不同公司的要求而定义。 就目前来说,基本每一款贴片机都可以输出站位清单 但对于企业来说,直接输出的站位清单一般不直接使用,需要进行手动处理 阅读详情

相关推荐

Grafana企业版vs开源版:从安装到插件管理的完整对比实测(含离线部署技巧)

本文深入对比Grafana企业版与开源版在安装流程、插件管理和功能限制等方面的差异,特别针对离线部署场景提供实用技巧。通过实测数据源支持、权限管理等核心功能,帮助企业用户做出明智选择,同时详细介绍离线安装和插件签名验证等关键操作。

weixin_29313817的博客 107

protractor测试框架1----页面对象模式

在上一篇的page-objects文件夹中放的是每个页面的代码: 页面中的代码如下: //login_page.js var login=function(){ var username_input = element(by.id('username')); var passwd_input = element(by.id('password')); var l...

测试媛 580

【Codex安装使用手册】

Codex安装部署使用教程

qq_43392230的博客 5002

Java并发包多线程总结

一、 多线程并发: (一) Volatile和synchronize: 1. volatile如何保证原子性? AtomicLong,它既解决了volatile的原子性没有保证的问题,又具有可见性。 2. volatile会不会影响指令重排(volatile禁止指令重排)    volatile两大作用 1、保证内存可见性 2、防止指令重排 此外需注意volatile并不保证操作的原

周洲 (Julie) 1360

STM32H743玩转以太网:不用FreeRTOS,手把手搞定LAN8742和DHCP(附MPU配置避坑指南)

本文详细介绍了在STM32H743裸机环境下实现以太网通信的完整方案,重点讲解了LAN8742 PHY芯片的配置和DHCP自动获取IP的实现。通过CubeMX配置、内存布局优化和MPU设置,避开了H7系列常见的Cache陷阱,提供了无操作系统环境下的高效网络通信解决方案。

weixin_42709044的博客 201

CS1237卡尔曼滤波实战:如何用24位ADC实现电子秤级精度?

本文详细介绍了如何利用CS1237 24位ADC芯片结合卡尔曼滤波算法实现电子秤级精度测量。通过解析CS1237硬件特性、卡尔曼滤波原理及STM32驱动优化,提供了一套完整的解决方案,包括多通道支持、驱动代码实现和性能调优技巧,适用于工业测量和嵌入式开发领域。

linux的博客 1089

安装protractor进行前端自动化测试-web ui自动化测试

安装protractor进行前端自动化测试-web ui自动化测试 介绍 protractor 是个 Node.js 程序。所以首先得安装 Node.js。然后就可以使用npm 安装 protractor 了。 通常 protractor 使用 Jasmine 测试框架作为他的测试接口。 下面的教程的测试将使用一个独立的 Selenium Server 来控制浏览器。需要安装 JDK 来运行这个服务器。可以用

胡杰的专栏 1万+

Delta-Sigma调制(DSM)技术

前言 数字信号处理和通信系统的性能很大程度上受到了模拟信号到数字信号转换接口——ADC的精度和分辨率的限制。而传统的线性脉冲编码调制(PCM)ADC受到了制造工艺的限制,无法达到很高的分辨率。但基于Delta-Sigma调制技术的ADC可以在现有工艺下实现高分辨率(大于16位),同时由于结构简单,所以易于实现。低成本高性能使得Delta-Sigma调制技术得到了广泛的应用。 Delta-Sigma型ADC的结构原理图如下图所示: 它最大的优势在于仅用1位ADC进行数据转换,同时其模拟电路部分结构简单不需要

阿星的博客 2万+

protractor 自动化测试书房

1、Protractor: Learn Testing Angular   

huangcaiyan 329

国产麒麟系统下用Rider开发C#桌面应用:从环境配置到Avalonia UI实战

本文详细介绍了在国产麒麟系统上使用JetBrains Rider开发C#桌面应用的完整流程,重点讲解了Avalonia UI框架的实战应用。从环境配置、Rider安装到Avalonia项目创建和UI开发技巧,全面覆盖了在非Windows环境下进行C#开发的关键步骤和优化建议,助力开发者高效构建跨平台桌面应用。

weixin_27791839的博客 387

【Qt】解决 FTH: (11284): *** Fault tolerant heap shim applied to current process. (亲测有效)

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers。容错堆垫片应用到当前的过程。这通常是由于以前的崩溃。win + r,输入regedit。

Fanjufei的博客 830

JAVA多线程的基本知识点总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 g本人刚学xi 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as p

zhoudawei1995的博客 224

c\c++: Identifiers, modifier, qualifier, specifier, decorator; systemtap

文章目录参考英语含义在c、C++ 参考 c++ 标准 https://blog.youkuaiyun.com/tyronne/article/details/44016621 英语含义 modifier word or phrase that modifies (modify 2) another word or phrase 修饰语. qualifier (grammar) word, esp an adjective or adverb, that qualifies another word 修饰词; (尤指)形

mzhan017的博客 2432

0基础学java之Day27(线程)

进程是系统进行资源分配和调用的独立单元,每一个进程都有它的独立内存空间和系统资源。什么是线程?线程是进程里面的一条执行路径,每个线程同享进程里面的内存空间和系统资源一个进程 可以有 多个线程:各个线程都有不同的分工理解线程和进程的关系进程 与 进程 之间的关系:进程之间的内存空间和系统资源是独立的同一个进程里的多条线程 :线程之间的内存空间和系统资源是共享的进程里:可以有一条或一条以上的线程进程里只有一条线程的情况下,这条线程就叫做主线程进程里有多条线程的情况下,只有一条线程叫做主线程。

2301_81594623的博客 1125

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java学习——day27(线程间通信与死锁防范)

通过·wait()notify()和实现线程间的协调,确保在临界区内的线程能够互相告知状态变化,从而达到数据共享和顺序控制。学习了死锁的四个必要条件,并通过设计合理的同步代码(避免不必要的嵌套锁定和严格的锁获取顺序)来防止死锁的发生。编写协作代码时,应尽量缩小 synchronized 块的范围,确保及时释放锁。

blackA_的博客 802

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JAVA学习记录DAY27-多线程和xml

JAVA多线程的实现方式包括三种,但追根究底其实是一种,都是通过Thread类来实现的。具体代码表现为三种:直接继承Thread类,实现Runnable接口,实现Callable接口。 1.创建一个Thread的子类,重写run()方法,使用的时候创建一个Thread的对象,调用start()方法,该方法继承Thread类,特点是代码实现比较简单,该子类应该就是当作线程类来使用,应该有具体的线程逻辑。 2.自定义的类通过实现Runnable接口,重写run()方法,使用的时候创建普通类的对象,再创建Thre

Alison_zhou的博客 197

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

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

JAVA 基础 day-27 练习 线程与线程安全

1.有一个抽奖池,该抽奖池中存放了奖励的金额,该抽奖池用一个数组int[] arr = {10,5,20,50,100,200,500,800,2,80,300};     创建两个抽奖箱(线程)设置线程名称分别为“抽奖箱1”,“抽奖箱2”,随机从arr数组中获取奖项元素并打印在控制台上,格式如下:        抽奖箱1 又产生了一个 10 元大奖    抽奖箱2 又产生了一个 100 元大奖...

alexzt的博客 841

Day_27 【Java基础】线程池ThreadPoolExecutor、ExecutorService、Executors工具类详解【附源码】

Java 多线程:彻底搞懂线程池 Android多线程:线程池ThreadPool全面解析 一、线程池 1. 什么是线程池? 从JDK 5开始出现,线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。(这里的任务就是实现了Runnable或Callable接口的实例对象) 2.线程池有什么优势? ① 降低资源消耗(重复利用线程池中的线程) ② 提高响应速度(减少了创建新线程的时间) ③ 便于线程管理(线程池统一分配,调度线程) 二、ExecutorServi

weixin_46081857的博客 1048

java基础语法day27(线程安全、线程同步、死锁、Lock锁、等待唤醒机制)

今日内容介绍1. 线程安全2. 线程同步3. 死锁4. Lock锁5. 等待唤醒机制第1章 多线程1.1 线程安全如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。我们通过一个案例,演示线程的安全问题:电影院要卖票,我们模拟电影院的卖票过程。假设要播放的电影是 “功夫熊猫3”,本次电影的座位...

nerveboy学习笔记 253

java----day27(多线程)

线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 我们通过一个案例,演示线程的安全问题: 电影院要卖票,我们模拟电影院的卖票过程。假设要播放的电影是 “功夫熊猫3”,本次电影的座位共100个(本场电影只能卖100张票)。 我们来模拟电影院的售票窗口,实现多个窗口同时卖 “功...

长镜头 160

从0开始学java-day27:多线程安全问题,等待唤醒机制

今日内容介绍1、多线程安全问题2、等待唤醒机制 =======================第一节课开始============================================= 01线程操作共享数据的安全问题 *A:线程操作共享数据的安全问题 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。 程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 02售票的案例 *A:售票的案例 /* * 多线程..

weixin_48583602的博客 184

【Java 入门 Day27】 多线程万字拆解(中篇):同步锁 + 线程通信,解决并发数据翻车惨案

家人们!上篇学会怎么开多线程,但是多个人(线程)抢同一个共享数据的时候,经常出现数据错乱、重复计算,今天专门讲锁机制和线程通信,根治并发脏数据!

2601_95534236的博客 754

【Java】day27--bat处理文件、懒汉单例设计模式的线程安全问题、反射、工厂设计模式、观察者设计模式部分知识点总结

(一)bat处理文件 bat处理文件 jar文件双击运行仅对于图形化界面的程序起作用,对于控制台程序不起作用。 bat批处理文件:bat批处理文件就是可以一次性执行多个命令的文件。 bat处理文件如何编写: 新建一个记事本,修改后缀名为bat,把要执行的命令写到bat文件上。(右键编辑,双击不是打开,是运行里面的命令) bat文件处理常用的命令: pause 让控制台...

Greenary的博客 309

Java学习day29:线程池Pool中创建线程方式(面试必考!)

在昨天的Java学习day28中,我们非常非常详细的讲解了线程池的知识点,其中创建线程池的两种方式里又有其中具体实现方法,昨天我们讲了前六种,而最重要的最后一种,也就是我们将来实际开发中会使用的一种,也是面试会问会考的一种方式。下面我们具体讲解。 7.ThreadPoolExecutor:手动创建线程池的方式,它创建时最多可以设置7个参数。1.为什么要求必须掌握这个?**ThreadPoolExecutor 相比于其他创建线程池的优势在于,它可以通过参数来控制最大任务数和拒绝策略,让线程池的执行

LF__plus的博客 1165

Day27-线程停止、线程休眠、线程礼让、Join

Day27-线程停止、线程休眠、线程礼让、Join

GHY0911的博客 223

牛客java选择题每日打卡Day27

👩‍💻博客主页京与旧铺的博客主页🔮本文由京与旧铺原创,csdn首发!😘系列专栏java学习👕参考网站牛客网💻首发时间🎞2022年7月22日🎠🎨你做三四月的事,八九月就会有答案,一起加油吧🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲💬推荐一款模拟面试、刷题神器👉。......

qq_46272491的博客 560
上一篇: day21 XML
下一篇: 27安卓线程
AverageJoe24
博客等级 码龄13年 0粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值