java 多线程-资源共享
发布时间:2020-12-15 05:26:35 所属栏目:Java 来源:网络整理
导读:单继承具有局限性,推荐使用Runnable接口,启动线程必须借用Thread类对象 new Thread(Run,String s).start(),new Thread()可以传字符串 Thread.currentThread().getName();当前线程的名字,即传入的字符串 重写的run()方法没有返回值,且不能抛出异常 Thread
模拟抢票: public class ThreadDownload implements Runnable { private int num=99; public void run() { while(true) { if(num<0) { break; } try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //模拟延迟,停止200毫秒 System.out.println(Thread.currentThread().getName()+"-"+num--); } } public static void main(String[]args) { //一份资源 ThreadDownload web=new ThreadDownload(); System.out.println(Thread.currentThread().getName());//在main线程中,打印main //多个代理 new Thread(web,"a").start(); new Thread(web,"b").start(); new Thread(web,"c").start(); } } 模拟龟兔赛跑: public class ThreadDownload implements Runnable { private String winner; public void run() { for(int step=1;step<=100;step++) { if(Thread.currentThread().getName().equals("兔子")&&step%10==0) { try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println(Thread.currentThread().getName()+"-->"+step); boolean flag=gameOver(step); if(flag) { break; } } } private boolean gameOver(int step) { if(winner!=null) { return true; }else { if(step==100) { winner=Thread.currentThread().getName(); System.out.println("winner=="+winner); return true; } } return false; } public static void main(String[]args) { //一份资源 ThreadDownload td=new ThreadDownload(); new Thread(td,"乌龟").start(); new Thread(td,"兔子").start(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |