Java知识点31

同步:

 //就是在操作共享数据代码时,访问时只能让一个线程进去访

问,此线程执行完退出后,别的线程才能再对此共享数据代码进行访问。 
好处:解决了线程安全问题。Synchronized 
弊端:相对降低性能,因为判断锁需要消耗资源,产生了死锁。  
定义同步是有前提的: 

1,必须要有两个或者两个以上的线程,才需要同步。 

2,多个线程必须保证使用的是同一个锁。  

同步的第二种表现形式:  //对共享资源的方法定义同步 
同步函数:其实就是将同步关键字定义在函数上,让函数具备了同步性。  
同步函数是用的哪个锁呢?  //synchronized(this)用以定义需要进行同步的某一部分代码块 通过验证,函数都有自己所属的对象this,所以同步函数所使用的锁就是this锁。This.方法名  
当同步函数被static修饰时,这时的同步用的是哪个锁呢? 
静态函数在加载时所属于类,这时有可能还没有该类产生的对象,但是该类的字节码文件加载进内存就已经被封装成了对象,这个对象就是该类的字节码文件对象。 

所以静态加载时,只有一个对象存在,那么静态同步函数就使用的这个对象。 这个对象就是 类名.class 。

线程的停止:通过stop方法就可以停止线程。但是这个方式过时了。 
停止线程:原理就是:让线程运行的代码结束,也就是结束run方法。 
怎么结束run方法?一般run方法里肯定定义循环。所以只要结束循环即可。 第一种方式:定义循环的结束标记。 
第二种方式:如果线程处于了冻结状态,是不可能读到标记的,这时就需要通过Thread类中的interrupt方法,将其冻结状态强制清除。让线程恢复具备执行资格的状态,让线程可以读到标记,并结束。  
---------< java.lang.Thread >---------- interrupt():中断线程。 
setPriority(int newPriority):更改线程的优先级。 getPriority():返回线程的优先级。 
toString():返回该线程的字符串表示形式,包括线程名称、优先级和线程组。 Thread.yield():暂停当前正在执行的线程对象,并执行其他线程。 
setDaemon(true):将该线程标记为守护线程或用户线程。将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java 虚拟机退出。该方法必须在启动线程前调用。 join:临时加入一个线程的时候可以使用join方法。 
当A线程执行到了B线程的join方式。A线程处于冻结状态,释放了执行权,B开始执行。A什么时候执行呢?只有当B线程运行结束后,A才从冻结状态恢复运行状态执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值