77范文网 - 专业文章范例文档资料分享平台

java基础训练(3)

来源:网络收集 时间:2020-04-20 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

结果如下:

线程运行——>0 线程运行——>1 线程运行——>2 线程运行——>3 线程运行——>4

二、中断线程

class MyThread3 implements Runnable{ public void run(){ System.out.println(\、进入run方法\); try{ Thread.sleep(10000); System.out.println(\、已经完成休眠\); }catch(Exception e){ System.out.println(\、休眠被终止\); return; //让程序返回被调用处 } System.out.println(\、run 方法正常结束\); } }

public class ThreadInterruptDemo { public static void main(String[] args) { MyThread3 mt=new MyThread3(); Thread t=new Thread(mt,\线程\); t.start(); try{ Thread.sleep(2000);//稍微停2s在进行中断 }catch(Exception e){} t.interrupt(); } }

显示结果:

1、进入run方法 3、休眠被终止

三、后台线程。

//在线程MyThread中,尽管run()方法是死循环的方式,但是程序依然可以执行完,因为方法中死循环的线程操作已经设置成后台运行了

class MyThread4 implements Runnable{ public void run(){ while(true){ System.out.println(Thread.currentThread().getName()+\在运行。\); } } }

public class ThreadDaemonDemo { public static void main(String[] args) { MyThread4 mt=new MyThread4(); Thread t=new Thread(mt,\线程1\);

t.setDaemon(true); //此线程在后台运行 t.start(); //启动线程 } }

四、线程A,休眠1秒;线程B,休眠3秒;线程C,休眠4秒,继承Thread类

class MyThread5 extends Thread{ private int time; public MyThread5(String name,int time){ super(name); this.time=time; } public void run(){ try{ Thread.sleep(this.time); }catch(InterruptedException e){ e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+\线程,休眠\+this.time+\毫秒。\); } }

public class ExecDemo { public static void main(String[] args) { MyThread5 mt1=new MyThread5(\线程A\,1000); MyThread5 mt2=new MyThread5(\线程B\,3000); MyThread5 mt3=new MyThread5(\线程C\,4000); mt1.start(); mt2.start(); mt3.start(); } }

五、如果使用Runnable接口实现多线程,则不像Thread类那样可以直接使用Thread类中的name属性,需要在类中单独定义一个name是想以保存线程名称

class MyThread6 implements Runnable{ private String name; private int time; public MyThread6(String name,int time){ this.name=name; this.time=time; } public void run(){ try{ Thread.sleep(this.time); }catch(InterruptedException e){ e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+\线程,休眠\+this.time+\毫秒。\); } }

public class ExecDemo1 { public static void main(String[] args) { MyThread6 mt1=new MyThread6(\线程A\,1000);

}

}

MyThread6 mt2=new MyThread6(\线程B\,3000); MyThread6 mt3=new MyThread6(\线程C\,4000); new Thread(mt1).start(); new Thread(mt2).start(); new Thread(mt3).start();

六、解除死锁代码。

class Zhangsan{ public void say(){ System.out.println(\张三对李四说:“你给我画,我就把书给你!”\); } public void get(){ System.out.println(\张三得到画了。\); } }

class Lisi{ public void say(){ System.out.println(\李四对张三说:“你给我书,我就把画给你!”\); } public void get(){ System.out.println(\李四得到书了。\); } }

public class DeadLock implements Runnable{ private static Zhangsan zs=new Zhangsan(); private static Lisi ls=new Lisi(); private boolean flag=false; public void run(){ if(flag){ synchronized (zs){ zs.say(); try{ Thread.sleep(500); }catch(InterruptedException e){ e.printStackTrace(); } synchronized(ls){ zs.get(); } } }else{ synchronized (zs){ ls.say(); try{ Thread.sleep(500); }catch(InterruptedException e){ e.printStackTrace(); } synchronized(ls){ ls.get(); } } } } public static void main(String[] args){

DeadLock t1=new DeadLock(); DeadLock t2=new DeadLock(); t1.flag=true; t2.flag=false; Thread thA=new Thread(t1); Thread thB=new Thread(t2); thA.start(); thB.start(); } }

显示结果:

张三对李四说:“你给我画,我就把书给你!” 张三得到画了。

李四对张三说:“你给我书,我就把画给你!” 李四得到书了。

一、实现Runnable接口可以资源共享

class MyThread implements Runnable{ private int ticket=5; public void run(){ for(int i=0;i<100;i++){ if(ticket>0){ System.out.println(\卖票:ticket=\+ticket--); } } } }

public class RunnableDemo1 { public static void main(String[] args) { MyThread my=new MyThread(); new Thread(my).start(); new Thread(my).start(); new Thread(my).start(); } }

结果显示不止下列三个:

卖票:ticket=5 卖票:ticket=3 卖票:ticket=4 卖票:ticket=1 卖票:ticket=2 卖票:ticket=3 卖票:ticket=4 卖票:ticket=1 卖票:ticket=2 卖票:ticket=5 卖票:ticket=3 卖票:ticket=2 卖票:ticket=1 卖票:ticket=4 卖票:ticket=5

二、观察程序的输出

class MyThread1 implements Runnable{ }

public class CurrentThreadDemo1 { }

//在java中所有的线程都是同时启动的,哪个线程先抢到CPU资源,哪个线程就先运行,所以显示结果不唯一

public static void main(String[] args) { }

MyThread1 my =new MyThread1(); new Thread(my,\线程\).start(); public void run(){ }

for(int i=0;i<3;i++){ }

System.out.println(Thread.currentThread().getName()+\运行,

i=\+i);

my.run();

三、线程的强制执行,用join()方法,线程强制执行期间,其他线

程无法运行,必须等到线程完成之后才可以继续执行。

class MyThread1 implements Runnable{ }

public class ThreadJoinDemo {

public static void main(String[] args) {

MyThread1 mt=new MyThread1(); Thread t=new Thread(mt,\线程\); public void run(){ }

for(int i=0;i<8;i++){ }

System.out.println(Thread.currentThread().getName()+\运行

——>\+i);

t.start();

for(int i=0;i<8;i++){ if(i>4){ }

try{

t.join();

}catch(Exception e){}

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java基础训练(3)在线全文阅读。

java基础训练(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1000318.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: