线程02

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

线程中有几个方法需要我们区分

1 sleep方法是表示线程执行到这的时候只是暂时处于“睡眠”状态,在这种状态下线程是不会释放CPU资源的,当到达休眠时间后,线程继续“起来”干活。当线程处于sleep状态时别的线程不可以访问被锁定的对象。

2 yield方法指的是该线程暂时释放出CPU资源把CPU资源让给其他线程,它重回就绪状态等待CPU分配给相应的CPU时间片给它然后再执行。

3 wait方法指线程进入等待状态,此时别的线程可以访问被锁定的对象,当线程处于wait状态时,只有调用notify方法才能将线程“唤醒”让该线程重新进入就绪状态。

线程的同步一般有两种一种是同步代码块,同步代码块后面有个括号,里面可以选择是同步对象还是同步类字节码。当你同步的方法中有static修饰的时候那么锁的是字节码。同步普通方法的话是当前对象,同步静态方法的话是同步的类字节码。静态变量是这个类初始化的时候,静态变量已经帮你初始化好,并且放到静态区了,你实例化出来的对象的静态变量都指向静态区中的那个静态变量的地址值。

所以当我们使用线程同步时,要明确锁的资源,到底是锁字节码还是锁对象。如果同时锁一个资源那就是互斥了。

线程只能start一次,再次启动时会报异常 IllegalThreadStateException。

JVM就是多线程的,主方法是个线程,垃圾回收也是个线程。

启动多线程的话有有三种方法

1 设计一个Thread子类并重写其run方法,实例化这个子类,并且使用这个类的start方法。

2 设计一个测试类实现runable接口,并在这个类中重写run方法,实例化一个线程把测试类当作构造参数,来构造一个新的Thread类。

3 使用匿名类,继承Thread,重写run方法,直接在run方法中写业务代码。匿名类的一个好处是可以很方便的访问外部的局部变量。前提是外部的局部变量需要被声明为final。(JDK7以后就不需要了)

转载于:https://my.oschina.net/u/3544267/blog/1383048

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@postconstruct注解方法没有执行_把对象的创建交给spring来管理(注解IOC)

自动按照类型注入/** * 账户的业务层实现类 * * 曾经XML的配置&#xff1a; * <bean id"accountService" class"com.itheima.service.impl.AccountServiceImpl" * scope"" init-method"" destroy-method""> * <pro…

解决-ubuntu 安装redis无法启动

解决-ubuntu 安装redis无法启动 环境 Ubuntu 16.04 Port 6379 Redis version 5:4.0.9-1 1-安装 apt install redis2-安装完成-自启时提示启动服务失败 Errors were encountered while processing:redis-serverredis E: Sub-process /usr/bin/dpkg returned an error code (1…

JavaScript中的数据类型转换

js数据类型转换 使用&#xff1a;Number&#xff08;&#xff09;、parseInt() 和parseFloat&#xff08;&#xff09; 做类型转换 Number()强转一个数值(包含整数和浮点数)。*parseInt()强转整数&#xff0c;*parseFloat&#xff08;&#xff09;强转浮点数函数isNaN()检测参…

web.xml(8)_jsp-config

13.jsp-config jsp-config元素主要用来设定JSP的相关配置,<jsp:config>包含<taglib>和<jsp-property-group>两个子元素.当中<taglib>元素 在JSP 1.2时就已经存在了;而<jsp-property-group>是JSP 2.0新增的元素. taglib :对标记库描写叙述符文件&…

CABAC之手把手教你编码

首先要说明的是CABAC的生命期是SLICE,因此本篇所讲的也是一个SLICE里CABAC的流程,其次对于我们来说场模式几乎用不到,所以本文的编码流程只使用帧模式,因此实际上用到的表只有277个, 当然如果我写成399, 不是说里面所有表都用到的. 这里只是声明一下这个问题, 如果大家实际操作…

python网络攻击代码_Python-python网络编程写arp攻击代码

from scapy.all import ARP,send,arping import sys,re,random,time stdoutsys.stdout ip IPADDR"192.168.1.102" 网关 gateway_ip"192.168.1.1" tmp[] 伪造网关mac地址 for i in range(0,6): tmp.append(str("%02x"%random.randint(0x01,0xfe))…

Kubernetes初步学习

今天分享如题&#xff1a; Kubernetes 本篇内容源于工作项目需要自学 但K8s确实现在十分的主流so推荐给大家 最近更新缓慢由于工作太忙惹&#xff0c;忙里偷闲整理愿分享能与君共勉&#x1f4aa; 大家新年快乐&#x1f389; &#x1f508;言归正题&#xff0c;相信很多朋友…

手机界面常见的的九宫格

手机界面常见的的九宫格 手机界面常见的的九宫格 首先布局的话需要用到一个mainactivity和一个item的布局目前用得最多也最熟悉的还是LinearLayout布局所以&#xff0c;一下也是&#xff0c;按套路就不过多赘述了。 <GridView android:layout_width"wrap_content"…

JavaScript中的运算符

js运算符 算 字 赋 比 逻 位 它算术运算符 - * / --字符串连接 赋值运算 - %比较运算符 < > > < ! !逻辑运算符 && || !位运算 ^ & | << >>其它运算符 ? : 三元运算符 delete&#xff1…

CABAC编码

H&#xff0e;264&#xff0f;AVC标准采用了很多新技术和新方法&#xff0c;大大提高了视频编码效率&#xff0c;其中CABAC便是H&#xff0e;264&#xff0f;AVC采用的新型熵编码方法之一。CABAC采用了高效的算术编码思想&#xff0c;同时充分考虑了视频流相关统计特性&#xf…

【教程分享】Jmeter入门教程

好&#xff01;回归学长每周的教程分享&#xff01; PART2 >今天又来分享Jmter 因为最近好像有相关工作内容 提前准备资修一下 分享仅供参考- JMeter的作用对软件做压力测试 1.能够对HTTP和FTP服务器进行压力和性能测试&#xff0c; 也可以对任何数据库进行同样的测试&…

linux 特殊shell变量

特殊变量 环境变量&#xff1a; 系统本身运行需要由linux系统提前创建好的一类变量 主要用于用户的工作环境&#xff0c;包括&#xff08;用户的宿主目录&#xff0c;命令的查找路径&#xff0c;用户的当前目录&#xff0c;登录的终端等&#xff09;环境变量的值由操作系统本身…

JavaScript中的循环

js循环 程序中进行有规律的重复性操作&#xff0c;需要用到循环语句。 break 和 continue 语句对循环中的代码执行提供了更严格的控制。 for循环 for(var i0;i<len;i){...... }while循环 var i0;while(i<8){......i;}for-in 语句 for-in 语句是严格的迭代语句&…

快速傅里叶变换python_FFT快速傅里叶变换的python实现过程解析

FFT是DFT的高效算法&#xff0c;能够将时域信号转化到频域上&#xff0c;下面记录下一段用python实现的FFT代码。 # encodingutf-8 import numpy as np import pylab as pl # 导入和matplotlib同时安装的作图库pylab sampling_rate 8000 # 采样频率8000Hz fft_size 512 # 采样…

rabbitmq的安装全过程

2019独角兽企业重金招聘Python工程师标准>>> 1 首先下载安装依赖elang 添加yum支持 cd /usr/local/src/ mkdir rabbitmq cd rabbitmq wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm rpm -Uvh erlang-solutions-1.0-1.noarch.rpm rp…

【框架学习分享】HttpRunner

今天文章分为两部分 :) PART1 HttpRunner内容分享/ PART2 关于后厂村儿 10 Minutes HttpRunner: PART 1 首先感谢作者开源&#x1f44d; 因为最近工作需要用到HttpRunner&#xff0c; 于是便趁着周末学了下这个测试框架&#xff0c;感觉还可以~ 所以分享一下今天的学习记…

x264 移植到 ARM的方法

1。Linux下编译X264&#xff1a; 其实在windows下使用vc已经编译过了&#xff0c;不过听到有人说在linux下编好了&#xff0c;我也就尝试做一下&#xff0c;况且x264源代码的makefile已经做好了&#xff0c;我只需要做的就是把文件copy一下&#xff0c;然后make 一下就可以了。…

JavaScript中的元素获取与操作

js元素获取与操作 可以使用内置对象document上的getElementById方法来获取页面上设置了id属性的元素&#xff0c;获取到的是一个html对象&#xff0c;然后将它赋值给一个变量&#xff0c;比如&#xff1a; <script type"text/javascript">var oDiv document…

VUE2第五天学习---自定义指令

阅读目录 1.理解VUE中的自定义指令回到顶部1.理解VUE中的自定义指令 默认核心指令有 (v-model 和 v-show), 但是有时候我们需要用到自定义指令&#xff0c;在vue中&#xff0c;代码复用主要形式和抽象是组件&#xff0c;但是在有的情况下&#xff0c;我们仍然需要对DOM元素进行…

python报名_2019年少儿Python创意编程比赛报名时间

2019年Python创意编程比赛时间及相关规定&#xff1a;参赛对象 Python创意编程比赛设初中组和高中组。 全国各地初中、高中(含中等职业学校)在校学生均以个人名义报名参加。 参赛步骤 Python创意编程比赛分初评、复评和终评三个阶段&#xff0c;初评和复评以线上形式开展&#…