巩固知识最好的方式就是多敲代码;敲起来,世界就是你的。
public class Student implements Runnable{ @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println("我爱java"); } } public static void main(String[] args) { Student s= new Student(); new Thread(s).start(); for (int i = 0; i < 10; i++) { System.out.println("helloworld"); } System.out.println(Thread.currentThread().getPriority());//main默认下优先级为5 } }
public class Student implements Runnable{ @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println("我爱java"); } } public static void main(String[] args) { Student s= new Student(); Thread t1 = new Thread(s); Thread t2 = new Thread(s); t1.start(); t2.start(); t1.setPriority(4); t2.setPriority(8);//设置优先级 System.out.println(t1.getPriority()); System.out.println(t2.getPriority()); } }
public class Student implements Runnable{ private int ticket = 30; boolean flag = true; @Override public void run() { while (flag){ try{ ticket(); }catch (InterruptedException e){ e.printStackTrace(); } } } //使用同步方法 public synchronized void ticket() throws InterruptedException { if (ticket<=0){ flag = false; return; } Thread.sleep(100); System.out.println(Thread.currentThread().getName()+"抢到了第"+ticket--+"票"); } } public static void main(String[] args) { Student s= new Student(); new Thread(s,"卑微的我").start(); new Thread(s,"牛逼的你们").start(); new Thread(s,"黄牛").start(); }
//每次运行结果并不一致 牛逼的你们抢到了第30票 牛逼的你们抢到了第29票 牛逼的你们抢到了第28票 牛逼的你们抢到了第27票 牛逼的你们抢到了第26票 牛逼的你们抢到了第25票 牛逼的你们抢到了第24票 牛逼的你们抢到了第23票 卑微的我抢到了第22票 卑微的我抢到了第21票 卑微的我抢到了第20票 卑微的我抢到了第19票 卑微的我抢到了第18票 卑微的我抢到了第17票 卑微的我抢到了第16票 卑微的我抢到了第15票 卑微的我抢到了第14票 卑微的我抢到了第13票 卑微的我抢到了第12票 卑微的我抢到了第11票 卑微的我抢到了第10票 卑微的我抢到了第9票 卑微的我抢到了第8票 卑微的我抢到了第7票 卑微的我抢到了第6票 卑微的我抢到了第5票 黄牛抢到了第4票 黄牛抢到了第3票 黄牛抢到了第2票 卑微的我抢到了第1票
public class Animals implements Runnable{ String winner;//冠军 @Override public void run() { start(); } //因为乌龟和兔子都是从0步开始,所以不用考虑并发问题 public void start(){ for (int i = 0; i <= 100; i++) { boolean flag = race(i);//判断比赛是否结束 if (flag){ break; //如果结束则结束循环 } System.out.println(Thread.currentThread().getName()+"跑了"+i+"步"); } } //判断比赛是否结束 public boolean race(int nums){ if (winner!=null){ //如果冠军已经产生,则比赛就结束了 //另外一个选手就不需要再跑了。 return true; } if(nums==100){//谁先跑到100步谁就是冠军 winner = Thread.currentThread().getName(); System.out.println("比赛结束,获胜者是:"+winner); return true; } return false; } public static void main(String[] args) { Animals animals = new Animals(); new Thread(animals,"兔子").start();//开启线程 new Thread(animals,"乌龟").start(); } }