欢迎来到天天文库
浏览记录
ID:42785422
大小:71.00 KB
页数:8页
时间:2019-09-22
《Java中Thread的使用死锁以及生产者消费者问题详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、for(inti=0;i<100;i++){21System.out.println("******线程4****"+i);22}23}24}).start();25for(inti=0;i<100;i++){26System.out.println("******主线程****"+i);27}28}29}30/**31*32*四种方法实现线程的创建,两种运用的是内部类一种是实现接口,一种是继承线程33*34*/35classMyThread1extendsThread{36@Override37publicvoidrun()
2、{38for(inti=0;i<100;i++){39System.out.println("++++线程一++++++"+i);40}41}42}43classMyThread2implementsRunnable{44@Override45publicvoidrun(){46for(inti=0;i<100;i++){47System.out.println("-----线程二-------"+i);48}49}50}当想让线程暂时暂停,进入休眠状态,可以用Sleep实现,该方法是静态方法,可以直接被Thread引用。可以
3、在方法中设置休眠的时间。下面通过一个例子来说明Sleep的用法1packagejava819;2importjava.io.IOException;3importjava.nio.CharBuffer;4publicclassTestSleep{5publicstaticvoidmain(String[]args){6Runnerr=newRunner();7Threadt1=newThread(r);8Threadt2=newThread(r);9t1.start();10t2.start();11}12}13classRu
4、nnerimplementsRunnable{14@Override15publicvoidrun(){16for(inti=0;i<200;i++){17if(i%10==0&&i!=0){18try{19Thread.sleep(1000);//Sleep的用法20}catch(InterruptedExceptione){21e.printStackTrace();22}23}24System.out.println("——————————线程————————————"+i);25}26}27}当想让一个线程先执行完再去
5、执行另一个线程时,可以用Join方法将当前线程先执行完。下面通过一个例子来说明Join的用法。1packagecn.yj3g;2publicclassTestJoin{3publicstaticvoidmain(String[]args){4MyThread2t1=newMyThread2("zhangcun");5t1.start();6try{7t1.join();//先执行调用join方法的线程对象的run方法,完成后才调用这条语句所在的线程8}catch(InterruptedExceptione){9e.printS
6、tackTrace();10}1112for(inti=1;i<=10;i++){13System.out.println("------iammainthread");14}15}16}17classMyThread2extendsThread{18MyThread2(Strings){19super(s);20}21publicvoidrun(){22for(inti=1;i<=10;i++){23System.out.println("Iam"+getName());24try{25sleep(1000);26}catc
7、h(InterruptedExceptione){27System.out.println("又被打爆了!");28return;29}30}31}32}当需要一个线程让出当前执行状态即CPU,给其他线程执行的机会,就需要使用Yield方法,使当前线程暂时阻塞,让程序去执行其他的线程。还是通过一个例子来说明。1packagejava819;2publicclassTestYield{3publicstaticvoidmain(String[]args){4MyYieldmy1=newMyYield();5MyYield2my2
8、=newMyYield2();6my1.start();7my2.start();89}10}11classMyYieldextendsThread{12@Override13publicvoidrun(){14for(inti=0;i<100;i++){15System.o
此文档下载收益归作者所有