多线程学习笔记2
来源:互联网 发布:互联网金融数据分析师 编辑:程序博客网 时间:2024/06/05 22:45
线程的调度和优先级问题
- A:线程的调度
a:分时调度
b:抢占式调度 (Java采用的是该调度方式) - B:获取和设置线程优先级
a:默认是5
b:范围是1-10
public class ThreadPriority extends Thread { @Override public void run() { for (int x = 0; x < 100; x++) { System.out.println(getName() + ":" + x); } }public static void main(String[] args) { ThreadPriority tp1 = new ThreadPriority(); ThreadPriority tp2 = new ThreadPriority(); ThreadPriority tp3 = new ThreadPriority(); tp1.setName("东方不败"); tp2.setName("岳不群"); tp3.setName("林平之"); // 获取默认优先级 // System.out.println(tp1.getPriority()); // System.out.println(tp2.getPriority()); // System.out.println(tp3.getPriority()); // 设置线程优先级 // tp1.setPriority(100000); //设置正确的线程优先级 tp1.setPriority(10); tp2.setPriority(1); tp1.start(); tp2.start(); tp3.start(); } }
线程的控制(常见方法)
- A:休眠线程
public class ThreadSleep extends Thread { @Override public void run() { for (int x = 0; x < 100; x++) { System.out.println(getName() + ":" + x + ",日期:" + new Date()); // 睡眠 // 困了,我稍微休息1秒钟 try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }}
/* * 线程休眠 * public static void sleep(long millis) */public class ThreadSleepDemo { public static void main(String[] args) { ThreadSleep ts1 = new ThreadSleep(); ThreadSleep ts2 = new ThreadSleep(); ThreadSleep ts3 = new ThreadSleep(); ts1.setName("林青霞"); ts2.setName("林志玲"); ts3.setName("林志颖"); ts1.start(); ts2.start(); ts3.start(); }}
- B:加入线程
当前线程暂停, 等待指定的线程执行结束后, 当前线程再继续
public class ThreadJoin extends Thread { @Override public void run() { for (int x = 0; x < 100; x++) { System.out.println(getName() + ":" + x); } }}
public class ThreadJoinDemo { public static void main(String[] args) { ThreadJoin tj1 = new ThreadJoin(); ThreadJoin tj2 = new ThreadJoin(); ThreadJoin tj3 = new ThreadJoin(); tj1.setName("李渊"); tj2.setName("李世民"); tj3.setName("李元霸"); tj1.start(); try { tj1.join(); } catch (InterruptedException e) { e.printStackTrace(); } tj2.start(); tj3.start(); }}
- C:礼让线程
yield让出cpu
public class ThreadYield extends Thread { @Override public void run() { for (int x = 0; x < 100; x++) { System.out.println(getName() + ":" + x); Thread.yield(); } }}
public class ThreadYieldDemo { public static void main(String[] args) { ThreadYield ty1 = new ThreadYield(); ThreadYield ty2 = new ThreadYield(); ty1.setName("林青霞"); ty2.setName("刘意"); ty1.start(); ty2.start(); }}
- D:后台线程
设置一个线程为守护线程, 该线程不会单独执行, 当其他非守护线程都执行结束后, 自动退出
public class ThreadDaemon extends Thread { @Override public void run() { for (int x = 0; x < 100; x++) { System.out.println(getName() + ":" + x); } }}
public class ThreadDaemonDemo { public static void main(String[] args) { ThreadDaemon td1 = new ThreadDaemon(); ThreadDaemon td2 = new ThreadDaemon(); td1.setName("关羽"); td2.setName("张飞"); // 设置收获线程 td1.setDaemon(true); td2.setDaemon(true); td1.start(); td2.start(); Thread.currentThread().setName("刘备"); for (int x = 0; x < 5; x++) { System.out.println(Thread.currentThread().getName() + ":" + x); } }}
- E:终止线程(掌握)
public class ThreadStop extends Thread { @Override public void run() { System.out.println("开始执行:" + new Date()); // 我要休息10秒钟,亲,不要打扰我哦 try { Thread.sleep(10000); } catch (InterruptedException e) { // e.printStackTrace(); System.out.println("线程被终止了"); } System.out.println("结束执行:" + new Date()); }}
public class ThreadStopDemo { public static void main(String[] args) { ThreadStop ts = new ThreadStop(); ts.start(); // 你超过三秒不醒过来,我就干死你 try { Thread.sleep(3000); // ts.stop(); ts.interrupt(); } catch (InterruptedException e) { e.printStackTrace(); } }}
0 0
- 多线程学习笔记2
- 多线程学习笔记2
- 多线程学习笔记(2)
- java多线程学习笔记2
- 多线程学习笔记(2)
- 多线程学习笔记2-GCD
- .net多线程学习笔记 2 thread生命周期
- C#学习笔记(2):多线程数据交换
- ipmsg学习笔记3—多线程2
- 9. 多线程 Part 2 --- 学习笔记
- Thinking in Java---多线程学习笔记(2)
- Python爬虫学习笔记(2):多线程入门
- Java多线程学习笔记
- 多线程学习笔记
- 多线程学习笔记(一)
- 多线程学习笔记(二)
- 多线程学习笔记(一)
- 多线程学习笔记 一
- 在Mac上安装 jdk node npm ionic Cordova
- 重磅 | 消灭所有马赛克,谷歌宣布机器学习图像锐化工具RAISR
- 线性表(下)之链式存储之双向,单向循环列表
- Eddy的难题 Time Limit: 1000MS Memory Limit:
- iOS命名规范(转载)
- 多线程学习笔记2
- 《精彩绝伦的CSS》——提示(一)属性值排序
- 栈(上)之顺序栈
- Google 超分辨率技术 RAISR:模糊图片瞬间变清晰,运算速度快十倍
- RecyclerView的基本使用
- Cocoapods的安装和使用
- Hdu 1273 漫步森林【思维】水题~
- 栈(下)之链式栈
- Node.js 路由