A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

回帖奖励 +1

急需技术分,版主给个力,先谢谢了
回复 使用道具 举报
哇塞  好幸运  版主果然给力
回复 使用道具 举报
黑马程序员成就个人梦想
回复 使用道具 举报
天行健 君子自强不息
回复 使用道具 举报
接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中
可以有静态的 main 方法。
回复 使用道具 举报
晚上熬夜看代码  程序员容易吗
回复 使用道具 举报
中奖率也太低了吧
回复 使用道具 举报
不好玩   中奖率太低了
回复 使用道具 举报

马上有
回复 使用道具 举报
马上有!!
回复 使用道具 举报
学习学习!
回复 使用道具 举报
没学到的能给点不?
回复 使用道具 举报

没学到的能给点不?
回复 使用道具 举报
进程和线程
1,进程:是一个正在执行中的程序
        每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元

2,线程:进程中的一个独立的控制单元
        线程在控制着进程的执行

3,一个进程中至少有一个线程

4,java的进程:java vm 启动的时候会有一个进程java.exe,该进程中至少有一个线程负责java程序的执行,而且这个线程运行的代码存在于main方法中。该线程称之为主线程。

5,多线程的作用:多段代码同时执行,提高效率
回复 使用道具 举报
2,发现运行结果每一次都不同
因为多个线程都获取cpu的执行权,cpu执行到谁,就运行谁
明确一点,在某一时刻,只能有一个程序在运行(多核除外)
cpu在做着快速的切换,以达到看上去是同时运行的效果

我们可以形象的把多线程的运行形容为在互相抢夺cpu的执行权

这就是多线程的一个特性:随机性,也就是谁抢到,谁执行,至于执行多长时间,目前cpu决定
回复 使用道具 举报
实现方式和继承方式有什么区别?
实现方式的好处:避免了单继承的局限性
在定义线程的时候,建议使用实现方式
两种方式的区别:线程代码存放的位置不同
继承Thead:线程代码存放在Thread子run方法中
实现Runnable:线程代码存放在接口的子类的run方法
回复 使用道具 举报
7,安全问题:当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行,导致共享数据的错误

解决办法:对多条操作共享数据的语句,只能让一个线程都执行完,在执行过程中,其他线程不可以参与执行

java对于多线程的安全问题提供了专业的解决方式:同步代码块
synchronized(任意对象)

        需要被同步的代码;


对象如同锁,持有锁的线程可以在同步中执行
不持有锁的线程即使获取了cpu的执行权,也进不去
例子:火车上的卫生间--经典

同步的前提:第一,必须要有两个或者两个以上的线程;第二,必须是多个线程使用同一个锁
必须保证同步中只有一个线程在运行

好处:解决了多线程的安全问题
弊端:多个线程需要判断锁,较为消耗资源

如何查找多线程中的安全问题:
第一,明确哪些代码是多线程运行代码
第二,明确共享数据
第三,明确多线程运行代码中哪些是操作共享数据的

同步的两种体现形势:同步代码块和同步函数两种,其中同步函数就只要在定义函数的函数名前面加上synchronized即可,连建立对象的过程都省了。

那么同步函数用的是哪一个锁呢?
函数需要被对象调用,函数都有一个所属对象的引用,就是this
所以同步函数使用的锁是this

如果同步函数被静态以后,使用的锁:不是this,因为静态方法中也不可以定义this
静态进内存的时候,内存中没有本类对象,但是一定有该类对应的字节码文件对象。
类名.class,该对象的类型是Class
静态的同步方法,使用的锁是该方法所在类的字节码文件对象:类. Class
回复 使用道具 举报
什么时候再搞搞这样的活动啊
回复 使用道具 举报
pray 高级黑马 2014-4-25 21:40:36
879#
这个活动挺好,沙发
回复 使用道具 举报
解我燃眉之急
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马