------<ahref="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
黑马程序员——13,多线程(3)
/*
线程的停止:
其中的stop方法过时不能用
所以就需要控制循环达到停止线程的目的
*/
class Xctx8
{
publicstatic void main(String[] args)
{
Shipin a=new Shipin();
int sp=0;
Shengchangzhe b=new Shengchangzhe(a);
Thread t1=new Thread(b);
Thread t2=new Thread(b);
t1.start();
t2.start();
while(true)
{
if(sp==30)
{
a.fgai();//控制循环
break;
}
sp++;
System.out.println("main--"+Thread.currentThread().getName()+"----"+sp);
}
System.out.println("HelloWorld!");
}
}
class Shipin //食品类
{
privateint sp=0;
privateint f=1;//标示f,由于个人习惯,这里用的是int类型的
public void fgai()
{
f++;
}
public void shengchang( )
{
while(f==1)
{
sp++;
System.out.println("生产者"+Thread.currentThread().getName()+"----"+sp);
}
}
}
class Shengchangzhe /*生产者类*/implements Runnable
{
privateShipin a ;
Shengchangzhe(Shipin a)
{
this.a=a;
}
public void run()
{
a.shengchang();
}
}
/*
以上代码编译运行结果如下:
main--main----1
main--main----2
main--main----3
main--main----4
生产者Thread-1----2
生产者Thread-1----3
生产者Thread-1----4
生产者Thread-1----5
生产者Thread-1----6
生产者Thread-1----7
生产者Thread-1----8
生产者Thread-1----9
生产者Thread-1----10
生产者Thread-1----11
生产者Thread-1----12
生产者Thread-1----13
生产者Thread-1----14
生产者Thread-1----15
生产者Thread-0----2
生产者Thread-1----16
main--main----5
生产者Thread-1----18
生产者Thread-0----17
生产者Thread-1----19
main--main----6
main--main----7
main--main----8
main--main----9
生产者Thread-1----21
生产者Thread-0----20
生产者Thread-1----22
main--main----10
生产者Thread-1----24
生产者Thread-0----23
生产者Thread-1----25
main--main----11
生产者Thread-1----27
生产者Thread-0----26
生产者Thread-1----28
main--main----12
main--main----13
main--main----14
生产者Thread-1----30
生产者Thread-0----29
生产者Thread-0----32
生产者Thread-0----33
生产者Thread-0----34
生产者Thread-1----31
main--main----15
main--main----16
main--main----17
main--main----18
main--main----19
main--main----20
main--main----21
main--main----22
生产者Thread-1----36
生产者Thread-0----35
生产者Thread-0----38
生产者Thread-1----37
main--main----23
main--main----24
生产者Thread-1----40
生产者Thread-0----39
生产者Thread-0----42
生产者Thread-0----43
生产者Thread-0----44
生产者Thread-0----45
生产者Thread-0----46
生产者Thread-1----41
main--main----25
生产者Thread-1----48
生产者Thread-0----47
生产者Thread-0----50
生产者Thread-1----49
main--main----26
生产者Thread-1----52
生产者Thread-0----51
生产者Thread-1----53
main--main----27
生产者Thread-1----55
生产者Thread-0----54
生产者Thread-1----56
main--main----28
生产者Thread-1----58
生产者Thread-0----57
生产者Thread-1----59
main--main----29
main--main----30
Hello World!
生产者Thread-1----61
生产者Thread-0----60
*/
————————分割线————
/*
当程序里面有同步时程序可能停不下来
以下也提供了解决的办法
*/
class Xctx9
{
publicstatic void main(String[] args)
{
Shipin a=new Shipin();
int sp=0;
Shengchangzhe b=new Shengchangzhe(a);
Thread t1=new Thread(b);
Thread t2=new Thread(b);
t1.start();
t2.start();
while(true)
{
if(sp==30)
{
//a.fgai();//控制循环
t1.interrupt();//强制唤醒沉睡中的t1线程
t2.interrupt();//强制唤醒沉睡中的t2线程
break;
}
sp++;
System.out.println("main--"+Thread.currentThread().getName()+"----"+sp);
}
System.out.println("HelloWorld!");
}
}
class Shipin //食品类
{
privateint sp=0;
privateint f=1;//标示f,由于个人习惯,这里用的是int类型的
public void fgai()
{
f++;
}
public synchronized void shengchang( )//存在同步了
{
while(f==1)//当f为1的时候才执行
{
try{this.wait();}
catch(Exception e)
{
System.out.println("有异常");
f++;
}
/*
这种写法的话就会导致不管是哪一个线程得到锁都会被冻结
哪怕是主线程执行完了,这些副线程也还会被冻结,挂在这里不动
为了解决这个问题,主线程调用interrupt()方法,该方法会强制唤醒线程往下执行
第二步在catch块里面加上f++;强制被唤醒的线程执行到这里就把标示位停掉
run方法就不能被调用了,线程停止了。
*/
sp++;
System.out.println("生产者"+Thread.currentThread().getName()+"----"+sp);
}
}
}
class Shengchangzhe /*生产者类*/implements Runnable
{
privateShipin a ;
Shengchangzhe(Shipin a)
{
this.a=a;
}
public void run()
{
a.shengchang();
}
}
/*
以上代码编译运行结果:
main--main----1
main--main----2
main--main----3
main--main----4
main--main----5
main--main----6
main--main----7
main--main----8
main--main----9
main--main----10
main--main----11
main--main----12
main--main----13
main--main----14
main--main----15
main--main----16
main--main----17
main--main----18
main--main----19
main--main----20
main--main----21
main--main----22
main--main----23
main--main----24
main--main----25
main--main----26
main--main----27
main--main----28
main--main----29
main--main----30
Hello World!
有异常
生产者Thread-0----1
有异常
生产者Thread-1----2
*/
——————分割线————————
/*
以下讲解的是守护线程
*/
class Xctx10
{
publicstatic void main(String[] args) //主函数
{
Shipin a=new Shipin();
int sp=0;
Shengchangzhe b=new Shengchangzhe(a);
Thread t1=new Thread(b);
Thread t2=new Thread(b);
t1.setDaemon(true);//把t1线程标记为守护线程
t2.setDaemon(true);//把t2线程标记为守护线程
//守护线程也称作后台线程
//与后台线程对应的是前台线程
//守护线程必须要在线程开启之前标记好哪条线程是守护线程
t1.start();//开启t1线程
t2.start();//开启t2线程
while(true)
{
if(sp==30)
{
//a.fgai();//控制循环
//t1.interrupt();//强制唤醒沉睡中的t1线程
//t2.interrupt();//强制唤醒沉睡中的t2线程
/*
这次的实验把interrupt方法都注释掉,
原本没有了这些interrupt方法,t1线程和t2线程会冻结,
但是又由于前面把t1线程和t2线程标记为守护线程,
所以,到了“只剩下一个或者多个守护线程还没有停止的时候”虚拟机就会强制停止这些后台线程
*/
break;
}
sp++;
System.out.println("main--"+Thread.currentThread().getName()+"----"+sp);
}
System.out.println("HelloWorld!");
}
}
class Shipin //食品类
{
privateint sp=0;
privateint f=1;//标示f,由于个人习惯,这里用的是int类型的
public void fgai()
{
f++;
}
public synchronized void shengchang( )//存在同步了
{
while(f==1)//当f为1的时候才执行
{
try{this.wait();}//t1线程和t2线程执行到这里会冻结
catch(Exception e)
{
System.out.println("有异常");
f++;
}
sp++;
System.out.println("生产者"+Thread.currentThread().getName()+"----"+sp);
}
}
}
class Shengchangzhe /*生产者类*/implements Runnable
{
privateShipin a ;
Shengchangzhe(Shipin a)
{
this.a=a;
}
public void run()
{
a.shengchang();
}
}
————————分割线——————
/*
以下讲解的是线程中join方法的用法
*/
class Xctx11
{
public static void main(String[] args) /*主函数*/ throws Exception
//把异常抛给虚拟机了
{
Shengchangzhe a=new Shengchangzhe();
Thread t1=new Thread(a);
Thread t2=new Thread(a);
t1.start();
/* 本人把此行记为1号行*/ // t1.join();
//join方法会抛出一个异常
/*
(个人定义:1号行位置在t2线程开启前面,2号行位置在t2线程开启后面)
如果在1号行位置添加“t1.join();”这句话的话,
join方法使得t1抢夺了CPU的执行权,此时CPU执行权在主线程手中,
所以,主线程会把执行权给t1线程,主线程就冻结了,
等到t1线程执行完了(注意:这里是“执行完了”),主线程才可以拿到执行权
*/
t2.start();
/* 本人把此行记为2号行*/t1.join();
/*
如果在2号行位置添加“t1.join();”这句话的话,
主线程执行到这里遇到“t1.join();”这句话时候就会释放执行权,
然后主线程冻结,t1线程和t2线程在争夺执行权,
只要t1线程执行完了,主线程就会苏醒争夺执行权。
*/
for( int x=1;x<15 ;x++ )
{
System.out.println("主线程------"+x);
}
}
}
class Shengchangzhe/*生产者类*/implements Runnable
{
public void run()
{
for( int x=1;x<25 ;x++ )
{
System.out.println(Thread.currentThread().getName()+" 生产者生产了食品 ---"+x);
}
}
}
/*
以上代码编译运行后的结果如下:
Thread-0 生产者生产了食品 ---1
Thread-0 生产者生产了食品 ---2
Thread-0 生产者生产了食品 ---3
Thread-0 生产者生产了食品 ---4
Thread-0 生产者生产了食品 ---5
Thread-0 生产者生产了食品 ---6
Thread-0 生产者生产了食品 ---7
Thread-0 生产者生产了食品 ---8
Thread-0 生产者生产了食品 ---9
Thread-0 生产者生产了食品 ---10
Thread-0 生产者生产了食品 ---11
Thread-0 生产者生产了食品 ---12
Thread-0 生产者生产了食品 ---13
Thread-0 生产者生产了食品 ---14
Thread-0 生产者生产了食品 ---15
Thread-0 生产者生产了食品 ---16
Thread-0 生产者生产了食品 ---17
Thread-0 生产者生产了食品 ---18
Thread-0 生产者生产了食品 ---19
Thread-0 生产者生产了食品 ---20
Thread-0 生产者生产了食品 ---21
Thread-0 生产者生产了食品 ---22
Thread-0 生产者生产了食品 ---23
Thread-0 生产者生产了食品 ---24
Thread-1 生产者生产了食品 ---1
Thread-1 生产者生产了食品 ---2
主线程------1
主线程------2
主线程------3
Thread-1 生产者生产了食品 ---3
Thread-1 生产者生产了食品 ---4
Thread-1 生产者生产了食品 ---5
Thread-1 生产者生产了食品 ---6
Thread-1 生产者生产了食品 ---7
Thread-1 生产者生产了食品 ---8
Thread-1 生产者生产了食品 ---9
Thread-1 生产者生产了食品 ---10
Thread-1 生产者生产了食品 ---11
Thread-1 生产者生产了食品 ---12
Thread-1 生产者生产了食品 ---13
Thread-1 生产者生产了食品 ---14
Thread-1 生产者生产了食品 ---15
Thread-1 生产者生产了食品 ---16
主线程------4
主线程------5
主线程------6
Thread-1 生产者生产了食品 ---17
主线程------7
主线程------8
Thread-1 生产者生产了食品 ---18
主线程------9
Thread-1 生产者生产了食品 ---19
主线程------10
Thread-1 生产者生产了食品 ---20
主线程------11
Thread-1 生产者生产了食品 ---21
主线程------12
Thread-1 生产者生产了食品 ---22
主线程------13
Thread-1 生产者生产了食品 ---23
主线程------14
Thread-1 生产者生产了食品 ---24
*/
————————分割线——————
/*
以下讲解的是多线程中的优先级
*/
class Xctx12
{
public static void main(String[] args) /*主函数*/ throws Exception
//把异常抛给虚拟机了
{
Shengchangzhe a=new Shengchangzhe();
Thread t1=new Thread(a);
Thread t2=new Thread(a);
t1.start();
t1.setPriority(Thread.MAX_PRIORITY);
//setPriority方法是Thraed类中的设置优先级的方法
/*
MAX_PRIORITY设定为最高优先级10
MIN_PRIORITY设定为最低优先级1
NORM_PRIORITY设定为默认优先级5
三者都是设定为在Thead类中的静态成员,
优先级高只能够表示得到执行权的频率比较高,
但是绝对不是一直都可以得到执行权。
*/
t2.start();
for( int x=1;x<15 ;x++ )
{
System.out.println("主线程------"+x);
}
}
}
class Shengchangzhe/*生产者类*/implements Runnable
{
public void run()
{
for( int x=1;x<25 ;x++ )
{
System.out.println(Thread.currentThread().toString()+" 生产者生产了食品 ---"+x);
/*
Thread.currentThread().toString()的作用是打印线程名字,线程优先级别,线程组
例如:Thread[Thread-0,5,main]
该线程名字Thread-0 该线程优先级5 该线程的线程组是main
优先级一般设定为1到10级,5是默认优先级别,
而线程组则是开启该线程的线程,
例如,在该实验中主线程main开启了t1线程和t2线程,
那么t1线程和t2线程的线程组就是主线程main组了
*/
}
}
}
/*
以上代码编译运行结果:
Thread[Thread-0,10,main] 生产者生产了食品 ---1
Thread[Thread-1,5,main] 生产者生产了食品 ---1
主线程------1
Thread[Thread-1,5,main] 生产者生产了食品 ---2
Thread[Thread-0,10,main] 生产者生产了食品 ---2
Thread[Thread-1,5,main] 生产者生产了食品 ---3
主线程------2
主线程------3
主线程------4
主线程------5
主线程------6
主线程------7
主线程------8
主线程------9
主线程------10
主线程------11
主线程------12
主线程------13
主线程------14
Thread[Thread-1,5,main] 生产者生产了食品 ---4
Thread[Thread-0,10,main] 生产者生产了食品 ---3
Thread[Thread-0,10,main] 生产者生产了食品 ---4
Thread[Thread-1,5,main] 生产者生产了食品 ---5
Thread[Thread-0,10,main] 生产者生产了食品 ---5
Thread[Thread-1,5,main] 生产者生产了食品 ---6
Thread[Thread-0,10,main] 生产者生产了食品 ---6
Thread[Thread-1,5,main] 生产者生产了食品 ---7
Thread[Thread-0,10,main] 生产者生产了食品 ---7
Thread[Thread-1,5,main] 生产者生产了食品 ---8
Thread[Thread-0,10,main] 生产者生产了食品 ---8
Thread[Thread-1,5,main] 生产者生产了食品 ---9
Thread[Thread-0,10,main] 生产者生产了食品 ---9
Thread[Thread-1,5,main] 生产者生产了食品 ---10
Thread[Thread-0,10,main] 生产者生产了食品 ---10
Thread[Thread-1,5,main] 生产者生产了食品 ---11
Thread[Thread-0,10,main] 生产者生产了食品 ---11
Thread[Thread-0,10,main] 生产者生产了食品 ---12
Thread[Thread-1,5,main] 生产者生产了食品 ---12
Thread[Thread-0,10,main] 生产者生产了食品 ---13
Thread[Thread-1,5,main] 生产者生产了食品 ---13
Thread[Thread-0,10,main] 生产者生产了食品 ---14
Thread[Thread-1,5,main] 生产者生产了食品 ---14
Thread[Thread-0,10,main] 生产者生产了食品 ---15
Thread[Thread-1,5,main] 生产者生产了食品 ---15
Thread[Thread-0,10,main] 生产者生产了食品 ---16
Thread[Thread-0,10,main] 生产者生产了食品 ---17
Thread[Thread-0,10,main] 生产者生产了食品 ---18
Thread[Thread-0,10,main] 生产者生产了食品 ---19
Thread[Thread-0,10,main] 生产者生产了食品 ---20
Thread[Thread-0,10,main] 生产者生产了食品 ---21
Thread[Thread-0,10,main] 生产者生产了食品 ---22
Thread[Thread-0,10,main] 生产者生产了食品 ---23
Thread[Thread-0,10,main] 生产者生产了食品 ---24
Thread[Thread-1,5,main] 生产者生产了食品 ---16
Thread[Thread-1,5,main] 生产者生产了食品 ---17
Thread[Thread-1,5,main] 生产者生产了食品 ---18
Thread[Thread-1,5,main] 生产者生产了食品 ---19
Thread[Thread-1,5,main] 生产者生产了食品 ---20
Thread[Thread-1,5,main] 生产者生产了食品 ---21
Thread[Thread-1,5,main] 生产者生产了食品 ---22
Thread[Thread-1,5,main] 生产者生产了食品 ---23
Thread[Thread-1,5,main] 生产者生产了食品 ---24
*/
————分割线——————
/*
以下讲解的是多线程中的如何使用yield方法
*/
class Xctx13
{
public static void main(String[] args) /*主函数*/ throws Exception
//把异常抛给虚拟机了
{
Shengchangzhe a=new Shengchangzhe();
Thread t1=new Thread(a);
Thread t2=new Thread(a);
t1.start();
t2.start();
}
}
class Shengchangzhe/*生产者类*/implements Runnable
{
public void run()
{
for( int x=1;x<125 ;x++ )
{
System.out.println(Thread.currentThread().toString()+" 生产者生产了食品 ---"+x);
Thread.yield();
//yield是Thread类中的静态方法
/*
该方法可以暂时的释放执行权,注意:这个不是冻结!!!
作用是减缓线程的运行,从而尽可能的达到线程都有运行的效果
*/
}
}
}
/*
以上代码编译运行结果是:
Thread[Thread-0,5,main] 生产者生产了食品 ---1
Thread[Thread-1,5,main] 生产者生产了食品 ---1
Thread[Thread-0,5,main] 生产者生产了食品 ---2
Thread[Thread-1,5,main] 生产者生产了食品 ---2
Thread[Thread-0,5,main] 生产者生产了食品 ---3
Thread[Thread-1,5,main] 生产者生产了食品 ---3
Thread[Thread-0,5,main] 生产者生产了食品 ---4
Thread[Thread-1,5,main] 生产者生产了食品 ---4
Thread[Thread-0,5,main] 生产者生产了食品 ---5
Thread[Thread-1,5,main] 生产者生产了食品 ---5
Thread[Thread-0,5,main] 生产者生产了食品 ---6
Thread[Thread-1,5,main] 生产者生产了食品 ---6
Thread[Thread-0,5,main] 生产者生产了食品 ---7
Thread[Thread-1,5,main] 生产者生产了食品 ---7
Thread[Thread-0,5,main] 生产者生产了食品 ---8
Thread[Thread-1,5,main] 生产者生产了食品 ---8
Thread[Thread-0,5,main] 生产者生产了食品 ---9
Thread[Thread-1,5,main] 生产者生产了食品 ---9
Thread[Thread-0,5,main] 生产者生产了食品 ---10
Thread[Thread-1,5,main] 生产者生产了食品 ---10
Thread[Thread-0,5,main] 生产者生产了食品 ---11
Thread[Thread-1,5,main] 生产者生产了食品 ---11
Thread[Thread-0,5,main] 生产者生产了食品 ---12
Thread[Thread-1,5,main] 生产者生产了食品 ---12
Thread[Thread-0,5,main] 生产者生产了食品 ---13
Thread[Thread-1,5,main] 生产者生产了食品 ---13
Thread[Thread-0,5,main] 生产者生产了食品 ---14
Thread[Thread-1,5,main] 生产者生产了食品 ---14
Thread[Thread-0,5,main] 生产者生产了食品 ---15
Thread[Thread-1,5,main] 生产者生产了食品 ---15
Thread[Thread-0,5,main] 生产者生产了食品 ---16
Thread[Thread-1,5,main] 生产者生产了食品 ---16
Thread[Thread-0,5,main] 生产者生产了食品 ---17
Thread[Thread-1,5,main] 生产者生产了食品 ---17
Thread[Thread-0,5,main] 生产者生产了食品 ---18
Thread[Thread-1,5,main] 生产者生产了食品 ---18
Thread[Thread-0,5,main] 生产者生产了食品 ---19
Thread[Thread-1,5,main] 生产者生产了食品 ---19
Thread[Thread-0,5,main] 生产者生产了食品 ---20
Thread[Thread-1,5,main] 生产者生产了食品 ---20
Thread[Thread-0,5,main] 生产者生产了食品 ---21
Thread[Thread-1,5,main] 生产者生产了食品 ---21
Thread[Thread-0,5,main] 生产者生产了食品 ---22
Thread[Thread-1,5,main] 生产者生产了食品 ---22
Thread[Thread-0,5,main] 生产者生产了食品 ---23
Thread[Thread-1,5,main] 生产者生产了食品 ---23
Thread[Thread-0,5,main] 生产者生产了食品 ---24
Thread[Thread-1,5,main] 生产者生产了食品 ---24
Thread[Thread-0,5,main] 生产者生产了食品 ---25
Thread[Thread-1,5,main] 生产者生产了食品 ---25
Thread[Thread-0,5,main] 生产者生产了食品 ---26
Thread[Thread-1,5,main] 生产者生产了食品 ---26
Thread[Thread-0,5,main] 生产者生产了食品 ---27
Thread[Thread-1,5,main] 生产者生产了食品 ---27
Thread[Thread-0,5,main] 生产者生产了食品 ---28
Thread[Thread-1,5,main] 生产者生产了食品 ---28
Thread[Thread-0,5,main] 生产者生产了食品 ---29
Thread[Thread-1,5,main] 生产者生产了食品 ---29
Thread[Thread-0,5,main] 生产者生产了食品 ---30
Thread[Thread-1,5,main] 生产者生产了食品 ---30
Thread[Thread-0,5,main] 生产者生产了食品 ---31
Thread[Thread-1,5,main] 生产者生产了食品 ---31
Thread[Thread-0,5,main] 生产者生产了食品 ---32
Thread[Thread-1,5,main] 生产者生产了食品 ---32
Thread[Thread-0,5,main] 生产者生产了食品 ---33
Thread[Thread-1,5,main] 生产者生产了食品 ---33
Thread[Thread-0,5,main] 生产者生产了食品 ---34
Thread[Thread-1,5,main] 生产者生产了食品 ---34
Thread[Thread-0,5,main] 生产者生产了食品 ---35
Thread[Thread-1,5,main] 生产者生产了食品 ---35
Thread[Thread-0,5,main] 生产者生产了食品 ---36
Thread[Thread-1,5,main] 生产者生产了食品 ---36
Thread[Thread-0,5,main] 生产者生产了食品 ---37
Thread[Thread-1,5,main] 生产者生产了食品 ---37
Thread[Thread-0,5,main] 生产者生产了食品 ---38
Thread[Thread-1,5,main] 生产者生产了食品 ---38
Thread[Thread-0,5,main] 生产者生产了食品 ---39
Thread[Thread-1,5,main] 生产者生产了食品 ---39
Thread[Thread-0,5,main] 生产者生产了食品 ---40
Thread[Thread-1,5,main] 生产者生产了食品 ---40
Thread[Thread-0,5,main] 生产者生产了食品 ---41
Thread[Thread-1,5,main] 生产者生产了食品 ---41
Thread[Thread-0,5,main] 生产者生产了食品 ---42
Thread[Thread-1,5,main] 生产者生产了食品 ---42
Thread[Thread-0,5,main] 生产者生产了食品 ---43
Thread[Thread-1,5,main] 生产者生产了食品 ---43
Thread[Thread-0,5,main] 生产者生产了食品 ---44
Thread[Thread-1,5,main] 生产者生产了食品 ---44
Thread[Thread-0,5,main] 生产者生产了食品 ---45
Thread[Thread-1,5,main] 生产者生产了食品 ---45
Thread[Thread-0,5,main] 生产者生产了食品 ---46
Thread[Thread-1,5,main] 生产者生产了食品 ---46
Thread[Thread-0,5,main] 生产者生产了食品 ---47
Thread[Thread-1,5,main] 生产者生产了食品 ---47
Thread[Thread-0,5,main] 生产者生产了食品 ---48
Thread[Thread-1,5,main] 生产者生产了食品 ---48
Thread[Thread-0,5,main] 生产者生产了食品 ---49
Thread[Thread-1,5,main] 生产者生产了食品 ---49
Thread[Thread-0,5,main] 生产者生产了食品 ---50
Thread[Thread-1,5,main] 生产者生产了食品 ---50
Thread[Thread-0,5,main] 生产者生产了食品 ---51
Thread[Thread-1,5,main] 生产者生产了食品 ---51
Thread[Thread-0,5,main] 生产者生产了食品 ---52
Thread[Thread-1,5,main] 生产者生产了食品 ---52
Thread[Thread-0,5,main] 生产者生产了食品 ---53
Thread[Thread-1,5,main] 生产者生产了食品 ---53
Thread[Thread-0,5,main] 生产者生产了食品 ---54
Thread[Thread-1,5,main] 生产者生产了食品 ---54
Thread[Thread-0,5,main] 生产者生产了食品 ---55
Thread[Thread-1,5,main] 生产者生产了食品 ---55
Thread[Thread-0,5,main] 生产者生产了食品 ---56
Thread[Thread-1,5,main] 生产者生产了食品 ---56
Thread[Thread-0,5,main] 生产者生产了食品 ---57
Thread[Thread-1,5,main] 生产者生产了食品 ---57
Thread[Thread-0,5,main] 生产者生产了食品 ---58
Thread[Thread-1,5,main] 生产者生产了食品 ---58
Thread[Thread-0,5,main] 生产者生产了食品 ---59
Thread[Thread-1,5,main] 生产者生产了食品 ---59
Thread[Thread-0,5,main] 生产者生产了食品 ---60
Thread[Thread-1,5,main] 生产者生产了食品 ---60
Thread[Thread-0,5,main] 生产者生产了食品 ---61
Thread[Thread-1,5,main] 生产者生产了食品 ---61
Thread[Thread-0,5,main] 生产者生产了食品 ---62
Thread[Thread-1,5,main] 生产者生产了食品 ---62
Thread[Thread-0,5,main] 生产者生产了食品 ---63
Thread[Thread-1,5,main] 生产者生产了食品 ---63
Thread[Thread-0,5,main] 生产者生产了食品 ---64
Thread[Thread-1,5,main] 生产者生产了食品 ---64
Thread[Thread-0,5,main] 生产者生产了食品 ---65
Thread[Thread-1,5,main] 生产者生产了食品 ---65
Thread[Thread-0,5,main] 生产者生产了食品 ---66
Thread[Thread-1,5,main] 生产者生产了食品 ---66
Thread[Thread-0,5,main] 生产者生产了食品 ---67
Thread[Thread-1,5,main] 生产者生产了食品 ---67
Thread[Thread-0,5,main] 生产者生产了食品 ---68
Thread[Thread-1,5,main] 生产者生产了食品 ---68
Thread[Thread-0,5,main] 生产者生产了食品 ---69
Thread[Thread-1,5,main] 生产者生产了食品 ---69
Thread[Thread-0,5,main] 生产者生产了食品 ---70
Thread[Thread-1,5,main] 生产者生产了食品 ---70
Thread[Thread-0,5,main] 生产者生产了食品 ---71
Thread[Thread-1,5,main] 生产者生产了食品 ---71
Thread[Thread-0,5,main] 生产者生产了食品 ---72
Thread[Thread-1,5,main] 生产者生产了食品 ---72
Thread[Thread-0,5,main] 生产者生产了食品 ---73
Thread[Thread-1,5,main] 生产者生产了食品 ---73
Thread[Thread-0,5,main] 生产者生产了食品 ---74
Thread[Thread-1,5,main] 生产者生产了食品 ---74
Thread[Thread-0,5,main] 生产者生产了食品 ---75
Thread[Thread-1,5,main] 生产者生产了食品 ---75
Thread[Thread-0,5,main] 生产者生产了食品 ---76
Thread[Thread-1,5,main] 生产者生产了食品 ---76
Thread[Thread-0,5,main] 生产者生产了食品 ---77
Thread[Thread-1,5,main] 生产者生产了食品 ---77
Thread[Thread-0,5,main] 生产者生产了食品 ---78
Thread[Thread-1,5,main] 生产者生产了食品 ---78
Thread[Thread-0,5,main] 生产者生产了食品 ---79
Thread[Thread-1,5,main] 生产者生产了食品 ---79
Thread[Thread-0,5,main] 生产者生产了食品 ---80
Thread[Thread-1,5,main] 生产者生产了食品 ---80
Thread[Thread-0,5,main] 生产者生产了食品 ---81
Thread[Thread-1,5,main] 生产者生产了食品 ---81
Thread[Thread-0,5,main] 生产者生产了食品 ---82
Thread[Thread-1,5,main] 生产者生产了食品 ---82
Thread[Thread-0,5,main] 生产者生产了食品 ---83
Thread[Thread-1,5,main] 生产者生产了食品 ---83
Thread[Thread-0,5,main] 生产者生产了食品 ---84
Thread[Thread-1,5,main] 生产者生产了食品 ---84
Thread[Thread-0,5,main] 生产者生产了食品 ---85
Thread[Thread-1,5,main] 生产者生产了食品 ---85
Thread[Thread-0,5,main] 生产者生产了食品 ---86
Thread[Thread-1,5,main] 生产者生产了食品 ---86
Thread[Thread-0,5,main] 生产者生产了食品 ---87
Thread[Thread-1,5,main] 生产者生产了食品 ---87
Thread[Thread-0,5,main] 生产者生产了食品 ---88
Thread[Thread-1,5,main] 生产者生产了食品 ---88
Thread[Thread-0,5,main] 生产者生产了食品 ---89
Thread[Thread-1,5,main] 生产者生产了食品 ---89
Thread[Thread-0,5,main] 生产者生产了食品 ---90
Thread[Thread-1,5,main] 生产者生产了食品 ---90
Thread[Thread-0,5,main] 生产者生产了食品 ---91
Thread[Thread-1,5,main] 生产者生产了食品 ---91
Thread[Thread-0,5,main] 生产者生产了食品 ---92
Thread[Thread-1,5,main] 生产者生产了食品 ---92
Thread[Thread-0,5,main] 生产者生产了食品 ---93
Thread[Thread-1,5,main] 生产者生产了食品 ---93
Thread[Thread-0,5,main] 生产者生产了食品 ---94
Thread[Thread-1,5,main] 生产者生产了食品 ---94
Thread[Thread-0,5,main] 生产者生产了食品 ---95
Thread[Thread-1,5,main] 生产者生产了食品 ---95
Thread[Thread-0,5,main] 生产者生产了食品 ---96
Thread[Thread-1,5,main] 生产者生产了食品 ---96
Thread[Thread-0,5,main] 生产者生产了食品 ---97
Thread[Thread-1,5,main] 生产者生产了食品 ---97
Thread[Thread-0,5,main] 生产者生产了食品 ---98
Thread[Thread-1,5,main] 生产者生产了食品 ---98
Thread[Thread-0,5,main] 生产者生产了食品 ---99
Thread[Thread-1,5,main] 生产者生产了食品 ---99
Thread[Thread-0,5,main] 生产者生产了食品 ---100
Thread[Thread-1,5,main] 生产者生产了食品 ---100
Thread[Thread-0,5,main] 生产者生产了食品 ---101
Thread[Thread-1,5,main] 生产者生产了食品 ---101
Thread[Thread-0,5,main] 生产者生产了食品 ---102
Thread[Thread-1,5,main] 生产者生产了食品 ---102
Thread[Thread-0,5,main] 生产者生产了食品 ---103
Thread[Thread-1,5,main] 生产者生产了食品 ---103
Thread[Thread-0,5,main] 生产者生产了食品 ---104
Thread[Thread-1,5,main] 生产者生产了食品 ---104
Thread[Thread-0,5,main] 生产者生产了食品 ---105
Thread[Thread-1,5,main] 生产者生产了食品 ---105
Thread[Thread-0,5,main] 生产者生产了食品 ---106
Thread[Thread-1,5,main] 生产者生产了食品 ---106
Thread[Thread-0,5,main] 生产者生产了食品 ---107
Thread[Thread-1,5,main] 生产者生产了食品 ---107
Thread[Thread-0,5,main] 生产者生产了食品 ---108
Thread[Thread-1,5,main] 生产者生产了食品 ---108
Thread[Thread-0,5,main] 生产者生产了食品 ---109
Thread[Thread-1,5,main] 生产者生产了食品 ---109
Thread[Thread-0,5,main] 生产者生产了食品 ---110
Thread[Thread-1,5,main] 生产者生产了食品 ---110
Thread[Thread-0,5,main] 生产者生产了食品 ---111
Thread[Thread-1,5,main] 生产者生产了食品 ---111
Thread[Thread-0,5,main] 生产者生产了食品 ---112
Thread[Thread-1,5,main] 生产者生产了食品 ---112
Thread[Thread-0,5,main] 生产者生产了食品 ---113
Thread[Thread-1,5,main] 生产者生产了食品 ---113
Thread[Thread-0,5,main] 生产者生产了食品 ---114
Thread[Thread-1,5,main] 生产者生产了食品 ---114
Thread[Thread-0,5,main] 生产者生产了食品 ---115
Thread[Thread-1,5,main] 生产者生产了食品 ---115
Thread[Thread-0,5,main] 生产者生产了食品 ---116
Thread[Thread-1,5,main] 生产者生产了食品 ---116
Thread[Thread-0,5,main] 生产者生产了食品 ---117
Thread[Thread-1,5,main] 生产者生产了食品 ---117
Thread[Thread-0,5,main] 生产者生产了食品 ---118
Thread[Thread-1,5,main] 生产者生产了食品 ---118
Thread[Thread-0,5,main] 生产者生产了食品 ---119
Thread[Thread-1,5,main] 生产者生产了食品 ---119
Thread[Thread-0,5,main] 生产者生产了食品 ---120
Thread[Thread-1,5,main] 生产者生产了食品 ---120
Thread[Thread-0,5,main] 生产者生产了食品 ---121
Thread[Thread-1,5,main] 生产者生产了食品 ---121
Thread[Thread-0,5,main] 生产者生产了食品 ---122
Thread[Thread-1,5,main] 生产者生产了食品 ---122
Thread[Thread-0,5,main] 生产者生产了食品 ---123
Thread[Thread-1,5,main] 生产者生产了食品 ---123
Thread[Thread-0,5,main] 生产者生产了食品 ---124
Thread[Thread-1,5,main] 生产者生产了食品 ---124
*/
——————分割线——————
/*
一般编程的时候会遇到一些大代码块,运行时间长,
例如,很多时候主函数里面有多个循环体,
其中的一些循环体循环次数很多,很消耗时间,
现实生活中的例子电脑可以一边播放音乐一边看电影
这也是涉及到多线程的应用领域
*/
class Xctx14
{
publicstatic void main(String[] args)
{
new Thread()
{
public void run()
{
for( int x=1;x<35 ;x++ )
{
System.out.println(Thread.currentThread().toString()+" 1号生产者生产了食品 ---"+x);
}
}
}.start();//使用匿名内部类
Runnable a=new Runnable()
{
public void run()
{
for( int y=1;y<62 ;y++ )
{
System.out.println(Thread.currentThread().toString()+" 2号生产者生产了食品 ---"+y);
}
}
};//注意这里不要忘记加";"
new Thread(a).start();
for( int z=1;z<75 ;z++ )
{
System.out.println(Thread.currentThread().toString()+" 3号生产者生产了食品 ---"+z);
}
}
}
/*
以上代码编译运行结果如下:
Thread[Thread-0,5,main] 1号生产者生产了食品 ---1
Thread[Thread-0,5,main] 1号生产者生产了食品 ---2
Thread[Thread-1,5,main] 2号生产者生产了食品 ---1
Thread[main,5,main] 3号生产者生产了食品 ---1
Thread[Thread-1,5,main] 2号生产者生产了食品 ---2
Thread[Thread-0,5,main] 1号生产者生产了食品 ---3
Thread[Thread-1,5,main] 2号生产者生产了食品 ---3
Thread[Thread-1,5,main] 2号生产者生产了食品 ---4
Thread[Thread-1,5,main] 2号生产者生产了食品 ---5
Thread[Thread-1,5,main] 2号生产者生产了食品 ---6
Thread[Thread-1,5,main] 2号生产者生产了食品 ---7
Thread[Thread-1,5,main] 2号生产者生产了食品 ---8
Thread[Thread-1,5,main] 2号生产者生产了食品 ---9
Thread[main,5,main] 3号生产者生产了食品 ---2
Thread[main,5,main] 3号生产者生产了食品 ---3
Thread[main,5,main] 3号生产者生产了食品 ---4
Thread[main,5,main] 3号生产者生产了食品 ---5
Thread[main,5,main] 3号生产者生产了食品 ---6
Thread[main,5,main] 3号生产者生产了食品 ---7
Thread[main,5,main] 3号生产者生产了食品 ---8
Thread[main,5,main] 3号生产者生产了食品 ---9
Thread[main,5,main] 3号生产者生产了食品 ---10
Thread[main,5,main] 3号生产者生产了食品 ---11
Thread[main,5,main] 3号生产者生产了食品 ---12
Thread[Thread-1,5,main] 2号生产者生产了食品 ---10
Thread[Thread-1,5,main] 2号生产者生产了食品 ---11
Thread[Thread-1,5,main] 2号生产者生产了食品 ---12
Thread[Thread-1,5,main] 2号生产者生产了食品 ---13
Thread[Thread-1,5,main] 2号生产者生产了食品 ---14
Thread[Thread-1,5,main] 2号生产者生产了食品 ---15
Thread[Thread-1,5,main] 2号生产者生产了食品 ---16
Thread[Thread-1,5,main] 2号生产者生产了食品 ---17
Thread[Thread-1,5,main] 2号生产者生产了食品 ---18
Thread[Thread-1,5,main] 2号生产者生产了食品 ---19
Thread[Thread-1,5,main] 2号生产者生产了食品 ---20
Thread[Thread-1,5,main] 2号生产者生产了食品 ---21
Thread[Thread-1,5,main] 2号生产者生产了食品 ---22
Thread[Thread-1,5,main] 2号生产者生产了食品 ---23
Thread[Thread-1,5,main] 2号生产者生产了食品 ---24
Thread[Thread-1,5,main] 2号生产者生产了食品 ---25
Thread[Thread-1,5,main] 2号生产者生产了食品 ---26
Thread[Thread-1,5,main] 2号生产者生产了食品 ---27
Thread[Thread-1,5,main] 2号生产者生产了食品 ---28
Thread[Thread-1,5,main] 2号生产者生产了食品 ---29
Thread[Thread-1,5,main] 2号生产者生产了食品 ---30
Thread[Thread-1,5,main] 2号生产者生产了食品 ---31
Thread[Thread-1,5,main] 2号生产者生产了食品 ---32
Thread[Thread-1,5,main] 2号生产者生产了食品 ---33
Thread[Thread-1,5,main] 2号生产者生产了食品 ---34
Thread[Thread-1,5,main] 2号生产者生产了食品 ---35
Thread[Thread-1,5,main] 2号生产者生产了食品 ---36
Thread[Thread-1,5,main] 2号生产者生产了食品 ---37
Thread[Thread-1,5,main] 2号生产者生产了食品 ---38
Thread[Thread-1,5,main] 2号生产者生产了食品 ---39
Thread[Thread-1,5,main] 2号生产者生产了食品 ---40
Thread[Thread-1,5,main] 2号生产者生产了食品 ---41
Thread[Thread-1,5,main] 2号生产者生产了食品 ---42
Thread[Thread-1,5,main] 2号生产者生产了食品 ---43
Thread[Thread-1,5,main] 2号生产者生产了食品 ---44
Thread[Thread-1,5,main] 2号生产者生产了食品 ---45
Thread[Thread-1,5,main] 2号生产者生产了食品 ---46
Thread[Thread-1,5,main] 2号生产者生产了食品 ---47
Thread[Thread-1,5,main] 2号生产者生产了食品 ---48
Thread[Thread-1,5,main] 2号生产者生产了食品 ---49
Thread[Thread-1,5,main] 2号生产者生产了食品 ---50
Thread[Thread-1,5,main] 2号生产者生产了食品 ---51
Thread[Thread-1,5,main] 2号生产者生产了食品 ---52
Thread[Thread-1,5,main] 2号生产者生产了食品 ---53
Thread[Thread-1,5,main] 2号生产者生产了食品 ---54
Thread[Thread-1,5,main] 2号生产者生产了食品 ---55
Thread[Thread-1,5,main] 2号生产者生产了食品 ---56
Thread[Thread-1,5,main] 2号生产者生产了食品 ---57
Thread[Thread-1,5,main] 2号生产者生产了食品 ---58
Thread[Thread-1,5,main] 2号生产者生产了食品 ---59
Thread[Thread-1,5,main] 2号生产者生产了食品 ---60
Thread[Thread-1,5,main] 2号生产者生产了食品 ---61
Thread[Thread-0,5,main] 1号生产者生产了食品 ---4
Thread[Thread-0,5,main] 1号生产者生产了食品 ---5
Thread[Thread-0,5,main] 1号生产者生产了食品 ---6
Thread[Thread-0,5,main] 1号生产者生产了食品 ---7
Thread[Thread-0,5,main] 1号生产者生产了食品 ---8
Thread[Thread-0,5,main] 1号生产者生产了食品 ---9
Thread[Thread-0,5,main] 1号生产者生产了食品 ---10
Thread[Thread-0,5,main] 1号生产者生产了食品 ---11
Thread[Thread-0,5,main] 1号生产者生产了食品 ---12
Thread[Thread-0,5,main] 1号生产者生产了食品 ---13
Thread[Thread-0,5,main] 1号生产者生产了食品 ---14
Thread[Thread-0,5,main] 1号生产者生产了食品 ---15
Thread[Thread-0,5,main] 1号生产者生产了食品 ---16
Thread[Thread-0,5,main] 1号生产者生产了食品 ---17
Thread[Thread-0,5,main] 1号生产者生产了食品 ---18
Thread[Thread-0,5,main] 1号生产者生产了食品 ---19
Thread[Thread-0,5,main] 1号生产者生产了食品 ---20
Thread[Thread-0,5,main] 1号生产者生产了食品 ---21
Thread[Thread-0,5,main] 1号生产者生产了食品 ---22
Thread[Thread-0,5,main] 1号生产者生产了食品 ---23
Thread[Thread-0,5,main] 1号生产者生产了食品 ---24
Thread[Thread-0,5,main] 1号生产者生产了食品 ---25
Thread[Thread-0,5,main] 1号生产者生产了食品 ---26
Thread[Thread-0,5,main] 1号生产者生产了食品 ---27
Thread[Thread-0,5,main] 1号生产者生产了食品 ---28
Thread[Thread-0,5,main] 1号生产者生产了食品 ---29
Thread[Thread-0,5,main] 1号生产者生产了食品 ---30
Thread[Thread-0,5,main] 1号生产者生产了食品 ---31
Thread[Thread-0,5,main] 1号生产者生产了食品 ---32
Thread[Thread-0,5,main] 1号生产者生产了食品 ---33
Thread[Thread-0,5,main] 1号生产者生产了食品 ---34
Thread[main,5,main] 3号生产者生产了食品 ---13
Thread[main,5,main] 3号生产者生产了食品 ---14
Thread[main,5,main] 3号生产者生产了食品 ---15
Thread[main,5,main] 3号生产者生产了食品 ---16
Thread[main,5,main] 3号生产者生产了食品 ---17
Thread[main,5,main] 3号生产者生产了食品 ---18
Thread[main,5,main] 3号生产者生产了食品 ---19
Thread[main,5,main] 3号生产者生产了食品 ---20
Thread[main,5,main] 3号生产者生产了食品 ---21
Thread[main,5,main] 3号生产者生产了食品 ---22
Thread[main,5,main] 3号生产者生产了食品 ---23
Thread[main,5,main] 3号生产者生产了食品 ---24
Thread[main,5,main] 3号生产者生产了食品 ---25
Thread[main,5,main] 3号生产者生产了食品 ---26
Thread[main,5,main] 3号生产者生产了食品 ---27
Thread[main,5,main] 3号生产者生产了食品 ---28
Thread[main,5,main] 3号生产者生产了食品 ---29
Thread[main,5,main] 3号生产者生产了食品---30
Thread[main,5,main] 3号生产者生产了食品 ---31
Thread[main,5,main] 3号生产者生产了食品 ---32
Thread[main,5,main] 3号生产者生产了食品 ---33
Thread[main,5,main] 3号生产者生产了食品 ---34
Thread[main,5,main] 3号生产者生产了食品 ---35
Thread[main,5,main] 3号生产者生产了食品 ---36
Thread[main,5,main] 3号生产者生产了食品 ---37
Thread[main,5,main] 3号生产者生产了食品 ---38
Thread[main,5,main] 3号生产者生产了食品 ---39
Thread[main,5,main] 3号生产者生产了食品 ---40
Thread[main,5,main] 3号生产者生产了食品 ---41
Thread[main,5,main] 3号生产者生产了食品 ---42
Thread[main,5,main] 3号生产者生产了食品 ---43
Thread[main,5,main] 3号生产者生产了食品 ---44
Thread[main,5,main] 3号生产者生产了食品 ---45
Thread[main,5,main] 3号生产者生产了食品 ---46
Thread[main,5,main] 3号生产者生产了食品 ---47
Thread[main,5,main] 3号生产者生产了食品 ---48
Thread[main,5,main] 3号生产者生产了食品 ---49
Thread[main,5,main] 3号生产者生产了食品 ---50
Thread[main,5,main] 3号生产者生产了食品 ---51
Thread[main,5,main] 3号生产者生产了食品 ---52
Thread[main,5,main] 3号生产者生产了食品 ---53
Thread[main,5,main] 3号生产者生产了食品 ---54
Thread[main,5,main] 3号生产者生产了食品 ---55
Thread[main,5,main] 3号生产者生产了食品 ---56
Thread[main,5,main] 3号生产者生产了食品---57
Thread[main,5,main] 3号生产者生产了食品 ---58
Thread[main,5,main] 3号生产者生产了食品 ---59
Thread[main,5,main] 3号生产者生产了食品 ---60
Thread[main,5,main] 3号生产者生产了食品 ---61
Thread[main,5,main] 3号生产者生产了食品 ---62
Thread[main,5,main] 3号生产者生产了食品 ---63
Thread[main,5,main] 3号生产者生产了食品 ---64
Thread[main,5,main] 3号生产者生产了食品 ---65
Thread[main,5,main] 3号生产者生产了食品 ---66
Thread[main,5,main] 3号生产者生产了食品 ---67
Thread[main,5,main] 3号生产者生产了食品 ---68
Thread[main,5,main] 3号生产者生产了食品 ---69
Thread[main,5,main] 3号生产者生产了食品 ---70
Thread[main,5,main] 3号生产者生产了食品 ---71
Thread[main,5,main] 3号生产者生产了食品 ---72
Thread[main,5,main] 3号生产者生产了食品 ---73
Thread[main,5,main] 3号生产者生产了食品 ---74
*/