好久没有更博客了,最近一直在忙工作的事情。现在终于空下来了,这2天会抓紧时间整理多线程和socket,把JavaSE结束掉。
/** * * @version 1L * @author LinkinPark * @since 2015-2-3 * @motto 梦似烟花心似水,同学少年不言情 * @desc ^ 继承Thread,重写run方法。 */ public class MyThread extends Thread { private int i = 0; public void run() { for (; i < 10; i++) { //输出中i不连续,说明这种方式不能共享一份系统资源 System.out.println(this.getName() + " " + i); } } public static void main(String[] args) { for (int i = 0; i < 100; i++) { //输出了主线程 System.out.println(Thread.currentThread().getName() + " " + i); if (i == 20) { //这里开始抢占输出,注意的是i不连续 new MyThread().start(); new MyThread().start(); } } } }
public class MyThread1 implements Runnable { private int i = 0; @Override public void run() { for (; i < 100; i++) { //输出中i连续,表明这种方式会共享同一份系统资源 //这里没有Thread,所以只能通过这种方式:先返回当前正在执行的线程对象,然后在获得名字 System.out.println(Thread.currentThread().getName() + " " + i); } } public static void main(String[] args) { for (int i = 0; i < 100; i++) { //输出主线程 System.out.println(Thread.currentThread().getName() + " " + i); if (i == 20) { MyThread1 myThread1 = new MyThread1(); //这里开始抢占输出,注意的是i连续 new Thread(myThread1, "林肯的第一个线程").start(); new Thread(myThread1, "林肯的第二个线程").start(); } } } }
public void run() { if (target != null) { target.run(); } }这里有一个target,如何理解这个target呢?run方法又叫线程执行体,我们可以这样子来理解,线程呢就是一段程序流,这段程序流要操作一个对象,那么操作的这个对象就是这个target,值得注意的一点是Java语言的Thread必须使用Runnable对象里面的run方法。
原文地址:http://blog.csdn.net/u011794238/article/details/43451509