线程的控制和常用的方法
来源:互联网 发布:凶暴的男人知乎 编辑:程序博客网 时间:2024/05/01 11:05
常用的方法!
1:Thread.setName(String name);设置当前线程的名字。
2:Thread.currentThread();返回当前正在执行的线程对象的引用。
3:Thread.getName();返回当前线程的名字。
4:isAlive();判断线程是否还活着。
5:getPriority():获得线程的优先级数值。
6:setPriority():设置线程的优先级数值。
7:Thread.sleep(XXX):设置当前线程休眠时间。
8:join():当前线程调用某个线程的join()方法,将当前线程和该线程“合并”,直到该线程结束,当前线程才会恢复运行。。
9:yield():让出CPU,当前线程进入就绪队列等待调度。
如下示例代码:
/** * 创建一个类实现Runnable接口 * @author Liao * */class A implements Runnable{@Overridepublic void run() {for (int i=0; i<10; i++){System.out.printf("%s线程被调用了\n" ,Thread.currentThread().getName());}}}public class ThreadTest2 {public static void main(String[] args) {/*创建A的对象*/A a = new A();/*利用a构建Thread的对象*/Thread thread = new Thread(a);/*为线程设置名称*/thread.setName("习近平");/*启动线程*/thread.start();for (int i=0; i<10;i++){System.out.printf("%s线程被调用了\n" ,Thread.currentThread().getName());}}}
1:线程的优先级用数字来表示,范围从1到10。
2:主线程的缺省优先级是5,子线程的优先级默认与其父线程相同。
3:通常高优先级的线程将先于低优先级的线程执行,但并不总是这样(此时还只是处于就绪状态),因此实际开发中不可依赖优先级来决定线程的执行次序。
示例代码:
class A implements Runnable{@Overridepublic void run() {for (int i=0; i<10; i++){System.out.println("A线程" + i);}}}class B implements Runnable{@Overridepublic void run() {for (int i=0; i<10; i++){System.out.println("B线程" + i);}}}public class ThreadTest2 {public static void main(String[] args) {/*创建A的对象*/A a = new A();/*创建B的对象*/B b = new B();/*利用a构建Thread的对象*/Thread thread1 = new Thread(a);/*利用b构建Thread的对象*/Thread thread2 = new Thread(b);/*设置线程b的优先级为6*/thread2.setPriority(Thread.NORM_PRIORITY + 1);/*启动线程a*/thread1.start();/*启动线程b*/thread2.start();}}程序运行结果:
从图中可以看出,即使线程B的优先级高于A但是仍然有可能先执行A线程。
线程休眠!
线程的休眠指的是暂停执行当前运行中的线程,使之进入阻塞状态,待经过指定的"延迟时间"后再醒来并转为就绪状态。
示例代码:
class A implements Runnable{@Overridepublic void run() {for (int i=0; i<10; i++){System.out.println("A线程" + i);/*使线程休眠*/try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}public class ThreadTest2 {public static void main(String[] args) {/*创建A的对象*/A a = new A();/*利用a构建Thread的对象*/Thread thread1 = new Thread(a);/*启动线程a*/thread1.start();}}
线程的让步是指线程在运行中主动放弃当前获得的CPU处理机会,给其他线程执行的机会,但不使该线程阻塞,而是使之转为就绪状态。
示例代码:
class A implements Runnable{@Overridepublic void run() {for (int i=0; i<10; i++){System.out.println(Thread.currentThread().getName() +":"+ i);if (i % 10 == 0){/*使线程让步*/Thread.yield();}}}}public class ThreadTest2 {public static void main(String[] args) {/*创建A的对象*/A a = new A();/*利用a构建Thread的对象1*/Thread thread1 = new Thread(a);/*利用a构建Thread的对象2*/Thread thread2 = new Thread(a);/*设置名称*/thread1.setName("线程A");thread1.setName("线程B");/*启动*/thread1.start();thread2.start();}}
线程的串行化是指在多线程程序中,如果在一个线程运行的过程中要用到另外一个线程的运行结果,则可以进行线程的串行化处理。
class A implements Runnable{@Overridepublic void run() {for (int i=0; i<50; i++){System.out.println("子线程:" + i);}}}public class ThreadTest2 {public static void main(String[] args) {/*创建A的对象*/A a = new A();/*利用a构建Thread的对象*/Thread thread = new Thread(a);/*启动*/thread.start();try {/*暂停当前正在执行thread.join()的线程即主线程,直到thread对应的线程运行终止之后,当前线程才会恢复*/thread.join();} catch (InterruptedException e) {e.printStackTrace();}for (int i=0; i<50; i++){System.out.println("主线程:" + i);}}}
0 0
- 线程的控制和常用的方法
- Java中多线程线程的控制及常用方法
- Java的线程控制方法和线程池
- 线程常用的方法
- 线程常用的方法
- 线程的常用方法
- 线程入门学习3-------线程的生命周期和常用方法
- 线程控制的基本方法
- 线程的控制(常见方法)
- sleep()和wait()线程控制方法的区别
- 控制小数点的常用方法
- 线程中常用的方法
- Java的线程常用方法
- java 线程常用的方法
- Java--线程的常用方法
- 线程同步互斥的控制方法
- 线程同步互斥的控制方法
- 线程同步互斥的控制方法
- Oracle RAC 常用维护工具和命令
- linux和windows换行区别
- 安卓实训第六天:首先使用AsyncHttpClient来完成网页源代码的显示功能,json数据在服务器端的读取还有安卓上的读取
- 第一次实习面试总结
- hdu 4824 Disk Schedule双调欧几里得旅行商问题(dp)
- 线程的控制和常用的方法
- 三十六计之28计敌战篇—笑里藏刀
- poj 1738 取石子游戏 区间dpgarsiawachs算法
- hdu 4832 Chess(计数+dp)
- Servlet开发基础笔记
- Java实现HangMan自动解题程序---初涉AI
- 第十三周 1
- Java编写 函数数组(键盘输入n个数) 冒泡排序
- jsp与servlet之间的参数传递