以下是一些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线程操作的多个方面。 1. **线程创建** - 继承`Thread`类:创建一个新的类,该类继承自`Thread`,然后重写`run()`方法。实例化后调用`start()`...
本示例程序"java线程例子程序"展示了如何启动并管理多个线程,同时计算它们的运行时间和总挂起时间。 首先,我们来看`ThreadPrj.java`,这个文件很可能包含了线程类的定义。在这个类中,通常会重写`run()`方法,该...
Java线程是并发编程的基础,尤其对于计算机二级考试来说,理解和掌握Java线程的使用至关重要。线程使得程序能够同时处理多个任务,提高了系统资源的利用率和程序的响应速度。 在Java中,线程有两种创建方式:显式...
2. **多线程例子**: 示例代码展示了如何创建和启动三个独立的线程。每个线程在`run()`方法中执行特定的任务,即打印出"Hello World"加上自身的标识和延迟时间。`TestThread`的构造函数接收两个参数,用于设置线程...
Java线程是多任务编程的重要概念,它允许程序同时执行多个独立的任务,从而提高系统效率和响应速度。在Java中,线程可以分为用户线程和守护线程,前者是程序运行的基础,而后者是在所有用户线程结束时才终止的后台...
Java 多线程例子 Java 多线程是 Java 编程语言中的一种基本概念,它允许程序同时执行多个任务,从而提高程序的性能和效率。本文将通过三个实用的例子,讲解 Java 多线程的基本概念和使用方法。 第一个例子:创建多...
测试 线程 java
电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关...第五章 Java线程编程的例子 第六章 Java线程调度 第七章 Java线程调度例子 第八章 和同步相关的高级主题 第九章 多处理器机器上的并行化 第十章 线程组
java线程分析java project例子,里面分析了sleep(),join(),yield()和wait以及notify等方法的使用以及需要注意的地方。
Java线程的优先级范围是1(`Thread.MIN_PRIORITY`)到10(`Thread.MAX_PRIORITY`),默认优先级是5(`Thread.NORM_PRIORITY`)。线程优先级越高,获取CPU资源的可能性越大,但并不能保证优先级高的线程一定会先执行...
Java线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。在Java中,线程是程序执行的最小单位,由Java虚拟机(JVM)来管理和调度。理解并熟练掌握Java线程的创建、控制以及...
Java线程是并发编程的核心部分,它允许程序同时执行多个任务,从而提高系统效率...实践中的线程例子将有助于巩固理论知识,加深对线程工作原理的把握。在学习过程中,不断编写和调试多线程程序,是提升技能的最佳途径。
java多线程例子(1).pdf java多线程例子(1).pdf java多线程例子(1).pdf
4. **线程状态**:Java线程有五种状态:新建、可运行、运行、阻塞和死亡。了解这些状态可以帮助开发者更好地控制和调试线程。 5. **线程优先级**:每个线程都有一个优先级,Java中从1(`MIN_PRIORITY`)到10(`MAX_...
很简单的一个java多线程例子,希望多大家有帮助
根据提供的文件信息,我们可以归纳出以下关于Java多线程的经典示例中的关键知识点: ### Java多线程实现方式 在Java中,实现多线程有两种主要的方法:通过继承`Thread`类或者实现`Runnable`接口。 #### 继承...