
线程的优先级:
线程的优先级分为三种多线程如何避免死锁,分别是:
1-MIN_PRIORITY
10-MAX_PRIORITY
5-NORM_PRIORITY
因为怎么都不设置默认值是5
线程的优先级可以影响线程的执行顺序,其实这里指的是有可能影响多线程如何避免死锁,不会一定影响。在默认状况下(比如说主线程)它的默认值是5
详细源码演示:
packagecom.yeqc.thread;
classThRunimplementsRunnable{
@Override
publicvoidrun(){
try{
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName()+":"+i);
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
publicclassThreadDemo03{

publicstaticvoidmain(String[]args){
Threadt1=newThread(newThRun(),"A");
Threadt2=newThread(newThRun(),"B");
Threadt3=newThread(newThRun(),"C");
t1.setPriority(Thread.MIN_PRIORITY);
t2.setPriority(Thread.NORM_PRIORITY);
t3.setPriority(Thread.MAX_PRIORITY);
t1.start();
t2.start();
t3.start();
运行结果:
同步与死锁:
1.同步代码块
在代码块上加上“synchronized”关键字,则此源码块就称为同步代码块
2.同步代码块格式:
sychronized(同步对象){
需要同步的代码块;
3.同步方式
除了代码块可以同步,原理也有可以同步的
4.方法同步格式:

sychronizedvoid方法名称(){}
详细源码演示:
1.同步代码块方式:
packagecom.yeqc.thread;
classMythreadDemoimplementsRunnable{
@Override
publicvoidrun(){
for(inti=0;i<10;i++){
synchronized(this){
if(ticket>){
try{
Thread.sleep(500);
}catch(InterruptedExceptione){
e.printStackTrace();
}
System.out.println("车票:"+ticket--);
}
}
}
publicclassThreadDemo04{

publicstaticvoidmain(String[]args){
MythreadDemom=newMythreadDemo();
Threadt1=newThread(m);
Threadt2=newThread(m);
Threadt3=newThread(m);
t1.start();
t2.start();
t3.start();
运行结果:
2.同步方式
packagecom.yeqc.thread;
classMythreadDemoimplementsRunnable{
@Override
publicvoidrun(){
for(inti=0;i<10;i++){
tell();
}
publicsynchronizedvoidtell(){
if(ticket>){
try{

Thread.sleep(500);
}catch(InterruptedExceptione){
e.printStackTrace();
}
System.out.println("车票:"+ticket--);
}
publicclassThreadDemo04{
publicstaticvoidmain(String[]args){
MythreadDemom=newMythreadDemo();
Threadt1=newThread(m);
Threadt2=newThread(m);
Threadt3=newThread(m);
t1.start();
t2.start();
t3.start();
运行结果:
/**
*死锁:同学找工作(高新)
*公司需要你有工作经验(经验)
*/
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-119022-1.html
期待新歌
但没有想到北洋水师败得这么惨