1.currentThread()

public class Thread14 extends Thread{
static {
System.out.println("静态块的打印:" + Thread.currentThread().getName());
}
public Thread14() {
System.out.println("构造方法的打印: " + Thread.currentThread().getName());
}
public void run() {
System.out.println("run()方法的打印:" + Thread.currentThread().getName());
} //test
public static void main(String[] args) {
Thread14 thread14 = new Thread14();
thread14.start();
} }

运行结果:

静态块的打印:main
构造方法的打印: main
run()方法的打印:Thread-0

这个例子说明了,线程的构造方法、静态块是被main线程调用的,而线程类的run()方法才是应用线程自己调用的。

 public class Thread15 extends Thread{

     public Thread15() {
System.out.println("thread15 ---->begin");
System.out.println("Thread.currentThread().getName()----->" + Thread.currentThread().getName());
System.out.println("this.getName()----->" + this.getName());
System.out.println("thread15---->end");
} public void run() {
System.out.println("run------->begin");
System.out.println("Thread.currentThread.getName()---->" + Thread.currentThread().getName());
System.out.println("this.getName()------>" + this.getName());
System.out.println("run------>end");
}
public static void main(String[] args) {
Thread15 thread15 = new Thread15();
thread15.start();
}
}

运行结果:

thread15 ---->begin
Thread.currentThread().getName()----->main
this.getName()----->Thread-0
thread15---->end
run------->begin
Thread.currentThread.getName()---->Thread-0
this.getName()------>Thread-0
run------>end

当在执行Thread15 thread15 = new Thread15()的时候,this.getName也就是当前线程却是Thread-0.

2.sleep(long millions)

该方法的作用是在指定的时间内让当前正在执行的线程Thread.currentThread()暂停执行,也就是休眠。值得注意的一点是,该方法并不让出cpu资源,换句话说,也就是CPU依然在执行run()中的内容,无非这个内容是休眠而已。

 public class Thread16 extends Thread{
public void run() {
try{
System.out.println("run threadName= " + this.getName() + " begin");
Thread.sleep(20000);
System.out.println("run threadName= " + this.getName() + " end");
}catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Thread16 thread16 = new Thread16();
System.out.println("begin= " + System.currentTimeMillis());
thread16.start();
System.out.println("end= " + System.currentTimeMillis());
} }

执行结果:

 begin= 1447813479735
end= 1447813479736
run threadName= Thread-0 begin
run threadName= Thread-0 end

System.out.print是静态方法,因此输出的内容很快就会完成。启动的线程中有个休眠过程,thread-0 begin 和 thread-0 end 中间就会有等待。

3.yield()

 public class Thread17 extends Thread{
public void run() {
long beginTime = System.currentTimeMillis();
int count = 0;
for(int i = 0; i < 50000000; i++) {
Thread.yield();//去掉之后明显整个程序运行时间剪短
count = count + i + 1;
}
long endTime = System.currentTimeMillis();
System.out.println("用时:" + (endTime - beginTime) + "毫秒" + count);
} public static void main(String[] args) {
Thread17 thread17 = new Thread17();
thread17.start();
// Thread.currentThread().interrupt();
// System.out.println("1---" + Thread.interrupted());
// System.out.println("2---" + Thread.interrupted());
} }

yield()就是暂停当前执行的线程,并执行其他线程。这个暂停会是放弃cpu资源的,并且放弃cpu时间不确定,有可能刚放弃就又获得了。因此这里因为yield()方法中间消耗的时间也是不确定的。

4.interrupted()

 public static void main(String[] args) {
// Thread17 thread17 = new Thread17();
// thread17.start();
Thread.currentThread().interrupt();
System.out.println("1---" + Thread.interrupted());
System.out.println("2---" + Thread.interrupted());
}

测试当前线程是否已经中断,执行后就将状态标示改为false。因此,两次调用后返回必然为false

执行结果:

1---true
2---false

3.Thread中的静态方法的更多相关文章

  1. Java多线程4:Thread中的静态方法

    一.Thread类中的静态方法 Thread类中的静态方法是通过Thread.方法名来调用的,那么问题来了,这个Thread指的是哪个Thread,是所在位置对应的那个Thread嘛?通过下面的例子可 ...

  2. Java多线程3:Thread中的静态方法

    Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程 ...

  3. java 多线程3:Thread类中的静态方法

    Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程 ...

  4. (二)线程Thread中的方法详解

    1.start() start()方法的作用讲得直白点就是通知"线程规划器",此线程可以运行了,正在等待CPU调用线程对象得run()方法,产生一个异步执行的效果.通过start( ...

  5. 测试Thread中的常用方法

    package com.yhqtv.java; /* *测试Thread中的常用方法: * 1.start():启动当前线程:调用当前线程的run() * 2.run():通常需要重写Thread类的 ...

  6. 线程Thread中的方法详解(二)

    1.start() start()方法的作用讲得直白点就是通知"线程规划器",此线程可以运行了,正在等待CPU调用线程对象得run()方法,产生一个异步执行的效果.通过start( ...

  7. java多线程2:Thread中的方法

    静态方法: Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程". 为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程进行操作.下面 ...

  8. 测试Thread中的常用方法:

    测试Thread中的常用方法:start():启动当前线程:调用当前线程的run()run(): 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中currentThread ...

  9. Java多线程2:Thread中的实例方法

    Thread类中的方法调用方式: 学习Thread类中的方法是学习多线程的第一步.在学习多线程之前特别提出一点,调用Thread中的方法的时候,在线程类中,有两种方式,一定要理解这两种方式的区别: 1 ...

随机推荐

  1. python 提供INI配置文件的操作 ConfigParser

    原文地址:http://www.cnblogs.com/pumaboyd/archive/2008/08/11/1265416.html 红色的为标注信息 +++++++++++++++++引用+++ ...

  2. Nginx之旅系列 - Nginx日志功能 PK Linux内核printk

    题记:Nginx之旅系列是用来记录Nginx从使用到源码学习的点点滴滴,分享学习Nginx的快乐 Nginx 首页: http://nginx.org/ Nginx日志功能 PK Linux内核pri ...

  3. Linux:用at和crontab调度作业

    一.有2种作业调度方式 1.突发性的,就是只运行作业一次而不是定期运行,使用at命令. 例如在进程A运行一段时间后关闭该进程. 2.定期运行,就是每隔一定的周期运行一次,使用crontab命令. 如每 ...

  4. 64位linux报错Could not initialize class java.awt.image.BufferedImage

    最近碰到一个问题: 64位linux报错Could not initialize class java.awt.image.BufferedImage 在WIN平台下运行正常BufferedImage ...

  5. Android中使用开源框架Fresco处理图片

    本文为原创博文,转载请注明原文链接:http://www.cnblogs.com/panhouye/p/6278116.html 关于Fresco的优点大家自行谷歌吧,它太强大太优秀了,我这一片小博文 ...

  6. ASP.NET网站运行常见错误以及解决方法(持续更新)

    一.A potentially dangerous Request.Form value was detected from the client 用户在页面上提交表单到服务器时,服务器会检测到一些潜 ...

  7. mysql建立、删除索引及使用

    同步发布:http://www.yuanrengu.com/index.php/2017-01-13.html 一.索引的作用 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少 ...

  8. [ios2]componentsSeparatedByCharactersInSet使用方法

    NSString*str =@"A~B^C"; NSArray*arr =[str componentsSeparatedByCharactersInSet:           ...

  9. Android自定义控件系列(一)—Button七十二变

    转载请注明出处:http://www.cnblogs.com/landptf/p/6290791.html 忙了一段时间,终于有时间整理整理之前所用到的一些知识,分享给大家,希望给同学们有些帮助,同时 ...

  10. 使用gulp构建自动化工作流

    简单易用 高效构建 高质量的生态圈 可能很多人会说现在提gulp也太落后了吧,但我想说写点东西并不是为了讨论它是否过时,而是来帮助我们自己来记忆.整理和学习.任何工具,我需要,我才去使用它,正如此时我 ...