`
penghao122
  • 浏览: 363812 次
  • 性别: Icon_minigender_1
  • 来自: 广东珠海
社区版块
存档分类
最新评论

写一个线程例子

阅读更多
package com.t48.next.partice;

/** 主方法main()是java解释器调用的初始方法,它定义和同时启动了第二个
*  和第三个进程。类ThreadDemo继承了类Thread,重载了类Thread的方法run()
*/
public class ThreadDemo extends Thread {
/** 这里重载了类Thread的方法run(),它定义了这个线程的执行代码
*/
public void run() {
for (int i = 0; i < 5; ++i)
compute();
}

/** 除了解释器调用main()时创建的初始进程外,main()创建和启动了
*  两个进程
*/
public static void main(String[] args) {
// 创建第一个线程:一个这个类的实例。上面定义的方法run()
// 定义了这个线程的执行代码
ThreadDemo thread1 = new ThreadDemo();

// 通过传递一个Runnable类的实例给类Thread的构造函数来
// 创建第二个线程。下面类Runnable的匿名实例的方法run()
// 定义了这个线程的执行代码
Thread thread2 = new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 5; ++i) compute();
}
});

// 通过main()的参数对线程的优先级进行设定
if (args.length >= 1)
thread1.setPriority(Integer.parseInt(args[0]));
if (args.length >= 2)
thread2.setPriority(Integer.parseInt(args[1]));

// 启动这两个线程
thread1.start();
thread2.start();

// main()运行在解释器创建的初始线程中,现在,这个线程
// 也做一些工作
for (int i = 0; i < 5; ++i)
compute();

// 运行到下面的代码,我们将等待着线程的运行结束。但是
// 这些代码并不是必要的,所以我们将它们注释掉了。
// try {
// thread1.join();
// thread2.join();
// }
// catch (InterruptedException e) {}

// 仅仅当所有的线程都停止运行,主方法main()返回时,
// java虚拟机才退出。
}

// 类ThreadLocal的实例用来记录一个数值,这个数值可以通过
// 方法get()和set()来获得和设置。但是对不同的线程,它们
// 记录一个不同的数值。这个实例跟踪每个线程调用方法compute()
// 的次数
static ThreadLocal numcalls = new ThreadLocal();

/** 这是我们所有的线程都调用的模型函数 */
static synchronized void compute() {
// 计算出已经被当前线程调用的次数
Integer n = (Integer)numcalls.get();

if (n == null)
n = new Integer(1);
else
n = new Integer(n.intValue()+1);
numcalls.set(n);

// 显示线程的名字和调用的次数
System.out.println(Thread.currentThread().getName()+": "+n);

// 做一个长时间的计算,模拟一个有限次计算的线程
for (int i = 0, j = 0; i < 1000000; ++i)
j += i;

// 同样的,我们可以通过使线程休眠一段任意的时间来模拟一个
// 线程因为网络或者I/O操作的延迟
try {
Thread.sleep((int)(Math.random()*100+1));
}
catch(InterruptedException e) {}

// 每一个线程都客气的给其它线程提供运行的机会,这是很
// 重要的,可以保证一个线程不会使同等优先级的线程饿死
Thread.yield();
}
}
分享到:
评论

相关推荐

    今天没事给大家写一个多线程例子

    今天没事给大家写一个多线程例子 今天没事给大家写一个多线程例子

    易语言大漠多线程例子.rar

    这个"易语言大漠多线程例子.rar"压缩包包含了一个使用大漠插件实现多线程编程的示例项目。 多线程是现代程序设计中一个关键的概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。在易语言中,使用大漠...

    一个简单的线程例子

    在这个简单的线程例子中,我们可能看到的是如何启动一个线程。调用Thread对象的start()方法会启动一个新的线程,run()方法的代码将在新线程中执行。线程的生命周期包括新建(New)、可运行(Runnable)、运行...

    5个qt多线程例子

    第一个例子“调试---1.tar.gz”可能是一个用于调试多线程应用程序的工具,帮助开发者跟踪线程间的交互和同步问题。调试多线程程序是一项挑战,因为它涉及到线程间的复杂关系和同步原语,如信号和槽、mutexes、...

    java多线程例子

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

    多线程例子 演示多线程使用

    在计算机编程中,多线程是一种...这个“多线程例子.cpp”文件很可能是实现上述概念的一个具体实例,可能包括线程创建、同步、通信等操作。通过分析和学习这个例子,你可以更好地理解如何在实际项目中运用多线程技术。

    Delphi API 串口通信 多线程例子.rar

    在"Delphi API 串口通信 多线程例子.rar"这个压缩包中,可能包含了一个示例项目,展示了如何使用Delphi的API和多线程技术实现串口通信。文件名"codefans.net"可能指的是一个代码分享网站,或者是一个特定的源代码...

    易语言多线程简单实用例子分享

    在易语言中,可以使用“创建线程”命令来创建一个新的线程,该命令需要一个函数作为参数,这个函数将在新线程中执行。例如,你可以定义一个处理数据的函数,然后在线程中调用它,这样就不会阻塞主线程,保证了用户...

    易语言借助乐玩图色脚本多线程例子

    在这个“易语言借助乐玩图色脚本多线程例子”中,我们将探讨如何利用易语言结合特定的第三方库,如“乐玩”和“鱼刺”,实现多线程编程。 乐玩图色脚本可能是指一个图形界面工具或库,它为易语言提供了丰富的图形...

    c++多线程编程的十个例子

    一个例子可能是两个线程共享一个资源,一个线程读取,另一个线程写入,互斥量确保同一时间只有一个线程能访问资源。 3. **线程 join** 当主线程需要等待其他线程完成其工作时,可以使用`join()`函数。例如,主线程...

    线程死锁的例子

    在我们的例子“ConsoleApplication1”中,很可能包含了一个模拟线程死锁的简单控制台应用程序。通过这样的实例,我们可以深入理解线程是如何在操作系统中分配CPU时间片进行工作的。在单处理器系统中,线程不是同时...

    线程同步小例子

    在编程领域,线程同步是多线程编程中的一个核心概念,它涉及到如何有效地管理和协调多个并发执行的线程,确保它们能正确地共享资源,避免数据竞争和死锁等问题。这个“线程同步小例子”是基于孙鑫先生著作中的示例...

    C语言使用多线程例子

    在这个“C语言使用多线程例子”中,我们将探讨如何使用Windows API中的`CreateThread`函数来创建线程。 首先,`CreateThread`函数是Windows操作系统提供的一种API调用,用于在进程中创建新的执行线程。它的基本语法...

    多线程例子

    标题“多线程例子”表明这是一个关于如何在程序中实现并使用多线程的实例。多线程通常用于处理并发操作,如在用户界面(UI)中,可以同时进行数据加载、用户交互和其他后台任务。 描述中提到的例子将Windows窗口...

    一个初步的用VB写“多线程”程序的例子(9KB)

    标题中的“一个初步的用VB写“多线程”程序的例子”表明这是一个关于使用Visual Basic (VB)编程语言实现多线程技术的示例项目。多线程是计算机编程中的一个重要概念,允许程序同时执行多个任务,从而提高效率和响应...

    vb.net多线程例子

    总的来说,VB.NET的多线程功能强大且易于使用,对于初学者来说,通过简单的例子学习多线程是一个很好的起点。不过,随着项目复杂性的增加,理解并掌握线程管理、同步和通信机制至关重要,这将有助于编写出更加健壮和...

    java程序 两个线程实现学生成绩的读写

    Java程序中的多线程技术是实现并发...总的来说,这个Java程序展示了如何在并发环境中处理读写操作,是理解和实践Java多线程的一个好例子。通过学习这个程序,我们可以深入理解Java线程的使用以及并发编程中的核心概念。

    一个C++多线程例子

    多线程例子.cpp,有兴趣的可以下来研究一下.....

    三个C#线程的例子三个C#线程的例子三个C#线程的例子

    在这个例子中,我们创建了一个后台线程`backgroundThread`,并调用`Start`方法启动它。`IsBackground`属性设置为`true`,意味着当主线程结束时,即使后台线程仍在运行,程序也会退出。 ### 例子2:线程同步(Thread...

    java多线程的一个简单例子

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

Global site tag (gtag.js) - Google Analytics