线程的其他特征
来源:互联网 发布:数据库中升序排列 编辑:程序博客网 时间:2024/06/05 02:55
睡眠:
//使用sleep控制线程运行public class Test9 { /** * @param args */ public static void main(String[] args) { new Thread(new MyTask()).start(); new Thread(new MyTask2()).start(); }}class MyTask implements Runnable{ @Override public void run() { // for (int i = 0; i < 10000; i++) { System.out.println("线程名:"+Thread.currentThread().getName()+":"+i); } }}class MyTask2 implements Runnable{ @Override public void run() { for (int i = 0; i < 10000; i++) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程名:"+Thread.currentThread().getName()+":"+i); } }}
优先级:
//使用优先级控制线程运行public class Test10 { /** * @param args */ public static void main(String[] args) { Thread t1=new Thread(new MyTask3()); t1.setPriority(10); t1.start(); Thread t2=new Thread(new MyTask4()); t2.setPriority(10); t2.start(); }}class MyTask3 implements Runnable{ @Override public void run() { // for (int i = 0; i < 10000; i++) { System.out.println("线程名:"+Thread.currentThread().getName()+":"+i); } }}class MyTask4 implements Runnable{ @Override public void run() { for (int i = 0; i < 10000; i++) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程名:"+Thread.currentThread().getName()+":"+i); } } }
join
在一个线程中调用另一个线程的join方法 则当前线程阻塞 让另一个线程先运行//使用join控制线程运行public class Test11 { /** * @param args * @throws InterruptedException */ public static void main(String[] args) throws InterruptedException { // main线程 LifeCircle lc=new LifeCircle(); System.out.println(lc.isAlive());//线程状态值 lc.start(); System.out.println(lc.isAlive()); lc.join();//则表示当前线程阻塞 让lc运行完 再运行 System.out.println("主程序"); System.out.println(lc.isAlive()); }}class LifeCircle extends Thread{ @Override public void run() { int i=0; while((++i)<10){ System.out.println(Thread.currentThread().getName()+":"+i); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } }}
yiled
yield 与sleep的区别1.sleep给其他线程运行的机会 但不考虑其他线程的优先级 但是yield只会让给相同或更高优先级的线程2.sleep有异常 yield 没有3.当线程执行了sleep方法后 将转到阻塞状态 而执行了yield方法之后 则转到就绪状态 所以yield后可能执行一次或几次。public class Test12 { /** * yield余sleep的区别 * 1.sleep给其他线程运行的机会 但不考虑其他线程的优先级 但是yield只会让给相同或更高优先级的线程 * 2.sleep有异常 yield 没有 * 3.当线程执行了sleep方法后 将转到阻塞状态 而执行了yield方法之后 则转到就绪状态 所以yield后可能执行一次或几次 */ public static void main(String[] args) { //挂起线程 YieldOne y1=new YieldOne(); YieldOne y2=new YieldOne(); Thread t1=new Thread(y1,"a");//10 Thread t2=new Thread(y2,"b");//1 t1.setPriority(1); t1.start(); t2.setPriority(10);//第二个线程的优先级高 t2.start(); }}class YieldOne implements Runnable{ @Override public void run() { if("a".equals(Thread.currentThread().getName())){ Thread.yield();//yield只会将执行权交给优先级高的线程// try {// Thread.sleep(100);// } catch (InterruptedException e) {//sleep不管优先级 只要调用sleep 则当前线程睡 其他接过执行权// // TODO Auto-generated catch block// e.printStackTrace();// } } for (int i = 0; i <100; i++) { System.out.println(Thread.currentThread().getName()+":"+i);; } }}
1 0
- 线程的其他特征
- 新特征-有返回值的线程
- 获取其他线程的光标句柄[DELPHI]
- 获取其他线程的光标句柄[DELPHI]
- 启动tomcat的同时 启动其他线程
- 获取其他Activity中开启的线程
- Java线程:新特征-有返回值的线程
- Java线程:新特征-有返回值的线程
- Java线程:新特征-有返回值的线程
- Java线程:新特征-有返回值的线程
- Java线程:新特征-有返回值的线程
- Java线程:新特征-有返回值的线程
- Java线程:新特征-有返回值的线程
- Java线程:新特征-有返回值的线程
- Java线程:新特征-有返回值的线程
- Java线程:新特征-有返回值的线程
- Java线程:新特征-有返回值的线程
- Java线程:新特征-有返回值的线程
- 神奇的λ-calculus
- 字符流中第一个不重复的字符(哈希表+vecor+剑指offer)
- Android layout布局属性、标签属性总结大全
- 杭电1466计算直线的交点数
- Servlet多线程机制
- 线程的其他特征
- auto_ptr
- 随堂笔记:C语言相关小知识
- JAVA的安装及环境变量的配置
- Hadoop学习笔记,MapReduce任务Namenode DataNode Jobtracker Tasktracker之间的关系
- jsp中类似gridview的功能
- Android的bitmap和优化
- C++中的explicit关键字
- Android之ContentProvider总结