Java.线程.Thread类.Runnable接口.start().setDaemon().join()
2010-12-10 00:14
555 查看
凌晨零点。太晚了,脑子不转了。睡觉先。
------------------------------------------------- Start
------------------------------------------------- Start
//多个售票窗口同时卖票。总共100张车票。 class ThreadDemo2 { public static void main(String [] args) { TestThread t=new TestThread(); //TestThread类实例化了一个对象t。 /* //试图应用setName()设置线程名称不成功。why? Thread w1=new Thread(t); w1.currentThread().setName("窗口1"); w1.start(); Thread w2=new Thread(t); w2.currentThread().setName("窗口2"); w2.start(); Thread w3=new Thread(t); w3.currentThread().setName("窗口3"); w3.start(); */ //开了7个线程。 Thread w1=new Thread(t); w1.setDaemon(true); //将此线程转为后台线程。main运行结束时,此线程即结束 w1.start(); new Thread(t).start(); //下面六个为前台线程。main运行结束时,这些线程不会结束。 new Thread(t).start(); new Thread(t).start(); new Thread(t).start(); new Thread(t).start(); new Thread(t).start(); } } class TestThread implements Runnable //定义TestThread类实现Runnable接口。 { private int tickets=100; public void run() { while(tickets>0) { /* //////////////////////测试程序安全问题。卖票的这几个线程不默契,可能会同一张票多次卖出或者卖到负数。// try { Thread.sleep(10); //Thread.sleep()静态方法:迫使线程执行到该处暂停执行,让出CPU给别的线程,在指定的时间后(毫秒)CPU回到被暂停的线程继续执行。在此处用来增大此程序出错的几率。 } catch(Exception e) { System.out.println(e.getMessage()); } //////////////////////////*/ System.out.println(Thread.currentThread().getName()+" is saling ticket "+tickets--); } } }
//join()的应用 class JoinThread { public static void main(String [] args) { TestThread t=new TestThread(); Thread tt=new Thread(t); tt.start(); //i=10之前,tt所在的线程与main线程交替执行。i循环到100时,合并到main线程。所以要等到tt线程运行完之后main线程才会继续执行。 int i=0; while(i<=15) //10-15次要等到tt线程运行结束,才能运行。 { if(i==10) //i=10时,合并线程 { try { tt.join(); //当i=10时,合并到main线程 } catch(Exception e) { System.out.println(e.getMessage()); } } System.out.println("main thread "+i++); } } } class TestThread implements Runnable { public void run() { int i=0; while(i<20) { System.out.println(Thread.currentThread().getName()+" thread "+i++); } } }
相关文章推荐
- Java对多线程的支持(一) - Thread类、Runnable接口、Daemon线程、线程同步
- 多线程Thread与后台线程setDaemon,使用Runnable接口创建多线程
- Java对多线程的支持(一) - Thread类、Runnable接口、Daemon线程、线程同步
- Java对多线程的支持(一) - Thread类、Runnable接口、Daemon线程、线程同步
- java再复习——多线程之初识线程,并从源码角度分析start与run方法,Thread类与Runnable接口
- Java传统多线程的实现有两种方法,继承Thread类或者实现Runnable即可.线程启动时调用start()方法.
- Java线程--interrupt join yield setDaemon常用方法的使用
- Java知多少(58)线程Runnable接口和Thread类详解
- Java线程——Thread与Runnable、start()与run()
- java之Thread线程相关yield()、sleep()、wait()、join()、run和start区别详解
- JAVA 线程的两种基本实现方法(继承Thread类和实现Runnable接口)
- Java创建线程(Runnable接口和Thread类)
- Java之Thread线程相关yield()、sleep()、wait()、join()、run和start区别详解
- 利用Java线程Thread实现接口Runnable接口使图片动起来
- 线程创建:继承Thread、接口Runnable(静态代理模式)、接口CallableJAVA169-173
- Java中继承thread类与实现Runnable接口的区别(实现线程)
- Java线程演示样例 - 继承Thread类和实现Runnable接口
- java入门教程-7.4Java创建线程(Runnable接口和Thread类)
- 在java编程时,线程创建实现Runnable接口与继承Thread类的不同
- java多线程学习1-继承Thread类和实现Runnable接口来创建线程