Java基础第二十三天

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【字节码文件】类型的对象

                   死锁

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

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

        

         线程间的通信:

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

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

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

 

更多相关文章
  • 所谓的"托盘",在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分.在程序最小化或挂起时,但有不希望占据任务栏的时候,就可以把程序放到托盘区. 一 .原理 1.最小化的原理:首先要将窗口隐藏,然后 在绘制图标. 2.恢复的原理:将窗口显示,再将托盘 ...
  • vb.net反射机制 再次做机房收费系统出了点小状况,当运用反射机制生成D层类的对象的时候无法获取到类文件,代码如下,而相同的代码在第一次做机房收费系统的时候并没有报错. Public Class DataAccess '从配置文件获取响应数据库的的字符串这里是sql ReadOnly db As ...
  •   为了解决tomcat在大进行大并发请求时,出现内存溢出的问题,请修改tomcat的内存大小,其中分为以下两种方式: 一.使用 catalina.bat 等命令行方式运行的 tomcat 查看系统最大支持内存命令:java -Xmx1024m -version 1.修改 tomcat\bin\Ca ...
  • mysql高可用有很多方案,如mmm,mysql cluster等,但都无法真正应用到生产环境.偶然间发现mha(master high availability),目前在mysql高可用方面是一个相对成熟的解决方案,它能够在较短时间内实现自动故障检测和故障转移,通常在10~30秒内:并且在repl ...
  • 从vClient中看到一台主机连接断开,有红色报警标志,通过UCS的KVM Console打开发现,屏幕呈现紫屏! 在此之前主机一直运行正常,重启主机后主机能够进入到ESXi中,进入到UCS中看服务器的状态,如下: 根据上图的错误提示发现内存出现问题,找到出现问题的内存的插槽F1. 打开刀片服务器, ...
  • 每个月Net Applications都会发布上个月桌面操作系统份额统计数据. 这个数据可以帮助我们发现整体市场的趋势.根据这份统计数据显示,Windows 7今年1月份市占率微幅下降,从去年12月的56.26%下降至55.92%,Windows XP的市占率微幅上升,从去年12月的18.26%上升 ...
一周排行
  • 相信Scala 语言会逐渐普及开来,Play Framework 也会得到广泛的应用,Scala中国社区论坛为专门介绍Scala和Play Framework的中文技术论坛.论坛网址
  • 易网科技讯 9月26日消息,据国外媒体报道,黑莓手机生产商RIM今天在开发者大会上展示了BlackBerry 10 Beta3操作系统以及Alpha B测试手机.RIM表示最终版BlackBerry 10操作系统将在 ...
  • Oracle修改spfile文件的路径   问题背景:今天同事在做DB双机切换的时候发现oracle的spfile文件作为+DG_DATA 下的一个资源,本意是在+DG_ORA下                   ...
  • 经历过的优化案例中,最经常碰到的就是索引的问题,要么没加索引,要么没用合适的索引,相信这也是做开发的朋友最经常碰到的盲区了,很容易就给忽略了.最近一次碰到的案例中,由于存储过程中需要创建临时表,把数据插入到临时表中, ...
  • Debian旧版本源同步脚本   Debian Lenny源被官方归档了,使得许多来不及更新系统的服务器没源可用,archive.debian.org访问速度太慢, 不得以自己写个脚本同步lenny源. 由于Debi ...
  •         今天测试考试系统VB部分,发现问题:"错误 20 未能向文件obj\Debug\SQLServerDAL.csproj.FileListAbsolute.txt写入命令行.对路径E:\考试系 ...
  • 题目链接: http://poj.org/problem?id=3276 题目大意:有一些牛,头要么朝前要么朝后,现在要求确定一个连续反转牛头的区间K,使得所有牛都朝前,且反转次数m尽可能小. 解题思路: 首先不要看 ...
  • 一.动画基本类型: 如下表所示,Android的动画由四种类型组成,即可在xml中定义,也可在代码中定义,如下所示:           XML CODE    渐变透明度动画效果    alpha AlphaAni ...
  • SQL中一旦job比较多,里面执行的存储过程,就不知道是有哪些,下列语句可以用来查询Job的存储过程,将'%msdb%'替换成你要查的存储过程名称   SELECT b.[name] [Job名称],CASE WHE ...
  • four approachs can cross domain in javascript 1.jsonp 2.document.domain(only in frame and they have one same ...