`

java线程例子

阅读更多
以下是一些java线程的小李子,欢迎大家讨论

第一个例子:线程的interrupt方法的使用
package threadtest;

public class Thread1 extends Thread {

	private boolean stop = false;

	public static void main(String args[]) throws Exception {

		Thread1 thread = new Thread1();

		System.out.println("Starting thread...");

		thread.start();

		Thread.sleep(3000);

		System.out.println("Interrupting thread..."); // 这种方法并不会中断一个正在运行的线程

		thread.interrupt();

		Thread.sleep(3000);

		System.out.println("Stopping application...");

		System.exit(0);

	}

	public void run() {

		while (!stop) {

			System.out.println("Thread is running...");

			long time = System.currentTimeMillis();

			while ((System.currentTimeMillis() - time < 1000) && (!stop)) {

			}

		}

	}
}

执行结果:
Starting thread...
Thread is running...
Thread is running...
Thread is running...
Thread is running...
Interrupting thread...
Thread is running...
Thread is running...
Thread is running...
Stopping application...

第二个例子:   stop
package threadtest;

public class Thread2 extends Thread {
	volatile boolean stop = false;

	  public static void main( String args[] ) throws Exception {

		  Thread2 thread = new Thread2();

	   System.out.println( "Starting thread..." );

	   thread.start();

	   Thread.sleep( 3000 );

	   System.out.println( "Asking thread to stop..." );

	   thread.stop = true; //真的停止了

	   Thread.sleep( 3000 );

	   System.out.println( "Stopping application..." );

	   System.exit( 0 );

	  }

	  public void run() {

	    while ( !stop ) {

	     System.out.println( "Thread is running..." );

	      long time = System.currentTimeMillis();

	      while ( (System.currentTimeMillis()-time < 1000) && (!stop) ) {

	      }

	    }

	   System.out.println( "Thread exiting under request..." );

	  }
}


执行结果;
Starting thread...
Thread is running...
Thread is running...
Thread is running...
Asking thread to stop...
Thread exiting under request...
Stopping application...

第三个例子:  正确的停止线程方式是设置共享变量,并调用interrupt()(注意变量应该先设置)。如果线程没有被阻塞,
这时调用interrupt()将不起作用;否则,线程就将得到异常(该线程必须事先预备好处理此状况),接着逃离阻塞状态。
在任何一种情况中,最后线程都将检查共享变量然后再停止。Listing C这个示例描述了该技术。
package threadtest;

public class Thread3 extends Thread {
	volatile boolean stop = false;

	  public static void main( String args[] ) throws Exception {

		  Thread3 thread = new Thread3();

	   System.out.println( "Starting thread..." );

	   thread.start();

	   Thread.sleep( 3000 );

	   System.out.println( "Asking thread to stop..." );

	   thread.stop = true;

	   thread.interrupt(); //停止了再阻断会有异常发生

	   Thread.sleep( 3000 );

	   System.out.println( "Stopping application..." );

	   System.exit( 0 );

	  }

	  public void run() {

	    while ( !stop ) {

	     System.out.println( "Thread running..." );

	      try {

	      Thread.sleep( 1000 );

	      } catch ( InterruptedException e ) {

	      System.out.println( "Thread interrupted..." );

	      }

	    }

	   System.out.println( "Thread exiting under request..." );
	  }
}


Starting thread...
Thread running...
Thread running...
Thread running...
Asking thread to stop...
Thread interrupted...
Thread exiting under request...
Stopping application...

第四个例子
package multithread;

public class Test extends Thread{
    public static void main(String argv[])
    {
    	Test b = new Test();
        b.run();
    }
    public void start() //start方法才是启动线程的方法,一般不需要重写start方法,重写run方法即可
    {
       for (int i = 0; i <10; i++){
           System.out.println("Value of i = " + i);
       }
    }
}
执行结果,没有任何输出,因为线程只有调用start方法才进入运行状态

第五个例子:wait的使用
package multithread;

public class Agg {
	public static void main(String argv[]) {
		Agg a = new Agg();
		a.go();
	}

	public void go() {
		DSRoss ds1 = new DSRoss("one");
		ds1.start();
	}
}

class DSRoss extends Thread {
	private String sTname = "";

	DSRoss(String s) {
		sTname = s;
	}

	public void run() {
		notwait();
		System.out.println("finished");
	}

	public void notwait() {
		while (true) {
			try {
				System.out.println("waiting");
				wait();
			} catch (InterruptedException ie) {
			}
			System.out.println(sTname);
			notifyAll();
		}
	}
}

出现异常:
Exception in thread "Thread-0" java.lang.IllegalMonitorStateException
waiting
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at multithread.DSRoss.notwait(Agg.java:31)
at multithread.DSRoss.run(Agg.java:23)


join的使用:

class MyThread extends Thread{
	public void run(){
		for(int i=0;i<20;i++){
			System.out.println("lala"+this.getName());
		}
	}
}
public class Test {

	public static void main(String[] args) throws InterruptedException {
		
		MyThread t = new MyThread();
		t.start();
//		t.join();
		
		System.out.println(Double.NaN>5);
		System.out.println("lala");
		
	
		
	}

}


当没有t.join();时,主线程和线程的执行顺序是不一定的,但有了t.join();
之后,会保证t先执行完在执行main线程
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
lalaThread-0
false
lala
分享到:
评论

相关推荐

    java线程例子大全

    本资源“java线程例子大全”包含了十八个单元的实例代码,覆盖了Java线程操作的多个方面。 1. **线程创建** - 继承`Thread`类:创建一个新的类,该类继承自`Thread`,然后重写`run()`方法。实例化后调用`start()`...

    java线程例子程序

    本示例程序"java线程例子程序"展示了如何启动并管理多个线程,同时计算它们的运行时间和总挂起时间。 首先,我们来看`ThreadPrj.java`,这个文件很可能包含了线程类的定义。在这个类中,通常会重写`run()`方法,该...

    计算机二级Java线程例子学习教程.pdf

    Java线程是并发编程的基础,尤其对于计算机二级考试来说,理解和掌握Java线程的使用至关重要。线程使得程序能够同时处理多个任务,提高了系统资源的利用率和程序的响应速度。 在Java中,线程有两种创建方式:显式...

    2012年计算机二级Java线程例子学习教程.pdf

    2. **多线程例子**: 示例代码展示了如何创建和启动三个独立的线程。每个线程在`run()`方法中执行特定的任务,即打印出"Hello World"加上自身的标识和延迟时间。`TestThread`的构造函数接收两个参数,用于设置线程...

    java线程实例 各种小Demo

    Java线程是多任务编程的重要概念,它允许程序同时执行多个独立的任务,从而提高系统效率和响应速度。在Java中,线程可以分为用户线程和守护线程,前者是程序运行的基础,而后者是在所有用户线程结束时才终止的后台...

    java多线程例子

    Java 多线程例子 Java 多线程是 Java 编程语言中的一种基本概念,它允许程序同时执行多个任务,从而提高程序的性能和效率。本文将通过三个实用的例子,讲解 Java 多线程的基本概念和使用方法。 第一个例子:创建多...

    java 线程 例子

    测试 线程 java

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

    电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关...第五章 Java线程编程的例子 第六章 Java线程调度 第七章 Java线程调度例子 第八章 和同步相关的高级主题 第九章 多处理器机器上的并行化 第十章 线程组

    java线程分析java project例子

    java线程分析java project例子,里面分析了sleep(),join(),yield()和wait以及notify等方法的使用以及需要注意的地方。

    java多线程经典例子

    Java线程的优先级范围是1(`Thread.MIN_PRIORITY`)到10(`Thread.MAX_PRIORITY`),默认优先级是5(`Thread.NORM_PRIORITY`)。线程优先级越高,获取CPU资源的可能性越大,但并不能保证优先级高的线程一定会先执行...

    Java线程的简单例子

    Java线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。在Java中,线程是程序执行的最小单位,由Java虚拟机(JVM)来管理和调度。理解并熟练掌握Java线程的创建、控制以及...

    经典线程例子——Java线程学习指南

    Java线程是并发编程的核心部分,它允许程序同时执行多个任务,从而提高系统效率...实践中的线程例子将有助于巩固理论知识,加深对线程工作原理的把握。在学习过程中,不断编写和调试多线程程序,是提升技能的最佳途径。

    java多线程例子(1).pdf

    java多线程例子(1).pdf java多线程例子(1).pdf java多线程例子(1).pdf

    java中线程的应用例子

    4. **线程状态**:Java线程有五种状态:新建、可运行、运行、阻塞和死亡。了解这些状态可以帮助开发者更好地控制和调试线程。 5. **线程优先级**:每个线程都有一个优先级,Java中从1(`MIN_PRIORITY`)到10(`MAX_...

    java多线程的一个简单例子

    很简单的一个java多线程例子,希望多大家有帮助

    java一个多线程的经典例子

    根据提供的文件信息,我们可以归纳出以下关于Java多线程的经典示例中的关键知识点: ### Java多线程实现方式 在Java中,实现多线程有两种主要的方法:通过继承`Thread`类或者实现`Runnable`接口。 #### 继承...

Global site tag (gtag.js) - Google Analytics