`

java线程(一)

阅读更多
编写一个线程有两种方法,一种是实现Runnable接口,另一种方法是继承Thread类。
下面是实现Runnable接口的方法:
public class TestThread {
	public static void main(String[] args) {
		Runner r1 = new Runner();
		Thread t = new Thread(r1);
		t.start();
		
		for(int i=0; i<100; i++) {
			System.out.println("main" + i);
		}
	}
	
	
}

class Runner implements Runnable {

	@Override
	public void run() {
		for(int i=0; i<100; i++) {
			System.out.println(i);
		}
	}
	
}

下面是继承Thread类的方法:
public class TestThread {
	public static void main(String[] args) {
		Runner r1 = new Runner();
		r1.start();
		
		for(int i=0; i<100; i++) {
			System.out.println("main" + i);
		}
	}
	
	
}

class Runner extends Thread {

	@Override
	public void run() {
		for(int i=0; i<100; i++) {
			System.out.println(i);
		}
	}
	
}

因为继承了Thread,所以main方法中直接start就可以了。
线程的状态:



sleep的使用方法:
就是让线程停止一会,代码如下:
public class TestThread {
      public static void main(String[] args) {
          Runner r1 = new Runner();
	  r1.start();
	  try {
		 Thread.sleep(10000);
	  } catch(InterruptedException e) {
	  }
	   r1.interrupt(); //这个方法太粗暴了,不太好。用下面的flag来停止比较好.
     }
}

class Runner extends Thread {
     boolean flag = true;
     @Override
     public void run() {
          while(flag) {
               System.out.println("=====");
               try {
                    sleep(1000);
               } catch(InterruptedException e) {
                    return ;
                }
          }
     }
	
}


join方法
即合并,相当于方法调用。
代码如下:

public class TestThread {
	public static void main(String[] args) {
		Runner r1 = new Runner("runner1");
		r1.start();
		try {
			r1.join();
		} catch(InterruptedException e) {
		}
		for(int i=1; i<100; i++) {
			System.out.println("-------");
		}
	}
	
	
}

class Runner extends Thread {
	Runner(String name) {
		super(name);
	}
	
	@Override
	public void run() {
		for(int i=0; i<100; i++) {
			System.out.println("=====");
			try {
				sleep(1000);
			} catch(InterruptedException e) {
				return ;
			}
		}
	}
	
}

相当于方法的调用。
运行原理如图:

yield方法:
让出CPU让别的线程执行一会
代码如下:

public class TestThread {
	public static void main(String[] args) {
		Runner r1 = new Runner("runner1");
		Runner r2 = new Runner("runner1");
		r1.start();
		r2.start();
	}
	
	
}

class Runner extends Thread {
	Runner(String name) {
		super(name);
	}
	
	@Override
	public void run() {
		for(int i=0; i<100; i++) {
			System.out.println(getName() + i);
			if(i%10 == 0) {
				yield();
			}
		}
	}
	
}

每到10的倍数的时候,那个线程都会让出CPU让另一个线程去运行。
  • 大小: 50.3 KB
  • 大小: 1.9 KB
分享到:
评论

相关推荐

    Java线程讲解Java线程讲解

    Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解

    线程 JAVA java线程 java线程第3版 java线程第2版第3版合集

    电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition.Sep.2004.eBook-DDU Java Thread Programming (Sams) java线程第二版中英文 java线程第二版中英文 ...

    Java线程详解大全

    Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程

    Java线程Java线程Java线程Java线程

    Java线程Java线程Java线程Java线程Java线程Java线程

    java多线程编程总结

    Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 ...

    java 线程java 线程

    java 线程java 线程java 线程java 线程java 线程java 线程java 线程java 线程java 线程

    Java多线程编程总结

    Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-...

    Java线程模块Java线程之秒表

    Java线程模块Java线程之秒表新手学习Java线程模块时,利用Java中设置线程的暂停间隔,做的简易秒表

    java 线程 dump 分析工具 2.3.3

    Java的TDA线程转储分析器是一个用于分析Sun Java VM生成的线程转储和堆信息的小型Swing GUI(目前用1.4测试)。它从提供的日志文件中解析线程转储和类直方图。它提供关于发现的线程转储的统计信息,提供关于锁定监视器...

    java线程 线程学习资料 java线程教程

    java线程 线程 教程 java线程教程 java线程学习资料 本教程有什么内容? 本教程研究了线程的基础知识— 线程是什么、线程为什么有用以及怎么开始编写使用线程的简单 程序。 我们还将研究更复杂的、使用线程的应用...

    java线程同步java线程同步

    java线程同步java线程同步java线程同步

    java多线程笔记

    Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java...

    Java的线程和Java AppletJava的线程和Java AppletJava的线程和Java Applet

    Java的线程和Java AppletJava的线程和Java AppletJava的线程和Java AppletJava的线程和Java AppletJava的线程和Java Applet

    java线程.pdf

    java线程.pdf java 学习java

    Java线程Java线程

    java 线程 新手java 线程 新手java 线程 新手java 线程 新手

    java线程分析工具TDA

    分析java线程日志的工具,使用jstack把java线程日志dump下来,然后上传到该工具,就可以查看线程阻塞情况等信息。

    Java多线程设计模式上传文件

    Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...

    Java 模拟线程并发

    Java 模拟线程并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发

    Java线程.pdf

    Java线程.pdf

    java多线程读取文件

    Java多线程读大文件 java多线程写文件:多线程往队列中写入数据

Global site tag (gtag.js) - Google Analytics