`
longzhu007
  • 浏览: 47809 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

一个线程安全类的示例

阅读更多
import java.io.*;
import java.util.*;
import java.lang.*;
public class WorkTable
{
private Vector newWork;
private Vector assignedWork;
private String dirName;
class Refresher extends Thread {int refreshTime;Refresher(int x)
{   
    super("Refresher");
      refreshTime = x;
}
public void run()
{
     while(true) {
     if(newWork.isEmpty())
     {
         populateTable();
     }
       try {
            sleep(refreshTime);
           } catch(Exception e)
        {}}}}
     WorkTable(String aWorkingDir)
   {
    newWork = new Vector();
    assignedWork = new Vector();
    dirName = aWorkingDir;
   Refresher r = new Refresher(1000);
    r.setDaemon(true);r.start();}
   synchronized private void populateTable() {
   File workingDir = new File(dirName);
   String[] listOfFiles = workingDir.list();
   if (listOfFiles.length != 0)
  {
  for (int i=0; i < listOfFiles.length; i++)
{
       if(! assignedWork.contains(listOfFiles))
    {
     newWork.addElement( listOfFiles );
    }
  }
   notifyAll();
}}

public void finishWork(String processedFile)

{
    File f = new File(processedFile);
   f.delete();
   synchronized(this) {assignedWork.remove(processedFile);}}
   public synchronized String getWork(String aThreadID)
  {
   while(true) {
  if(newWork.isEmpty())try {
   wait();
} catch(Exception e)
{}
else {
   String fileName = (String)newWork.firstElement();
assignedWork.add(fileName);
try {newWork.removeElementAt(0);
}catch(ArrayIndexOutOfBoundsException ex){
return fileName;}
}
}
}
分享到:
评论

相关推荐

    c#线程安全的源代码示例

    在C#编程中,线程安全是一个至关重要的概念,特别是在多线程环境下,它涉及到多个线程同时访问共享资源时的正确性和一致性。本项目提供了一系列的源代码示例,帮助开发者理解和实现线程安全。 首先,理解线程安全的...

    多线程编程示例

    4. **线程安全**:如果一个方法或数据结构在多线程环境下能正确工作,我们就称其为线程安全。线程安全可以通过设计、同步机制或使用线程安全的数据结构来实现。 在实践中,多线程编程还需要关注性能和资源消耗,...

    Java 多线程 订票 示例 线程安全

    本示例将探讨如何在Java中实现一个线程安全的订票系统。 首先,我们要理解什么是线程安全。线程安全是指当多个线程访问同一代码块时,即使这些线程是并发执行的,程序也能保持其正确性,即不会出现数据混乱或丢失的...

    跨线程调用控件示例

    以下是一个简单的示例代码片段: ```csharp // 声明一个委托 public delegate void UpdateControlDelegate(string text); // 在其他线程中更新控件 private void UpdateControlFromOtherThread(string text) { if...

    java 多线程示例

    通过学习这个实例,你可以掌握如何创建和管理线程,理解线程同步与通信的重要性,以及如何处理线程安全问题。 1. **线程的创建** Java提供了两种创建线程的方式:继承`Thread`类和实现`Runnable`接口。在`lec22`中...

    QT5线程QThread使用示例

    本示例主要涉及的是`QThread`类的使用,这是Qt提供的一个高级线程接口,用于实现线程的创建和管理。 首先,我们来看`QThread`的基本用法。在C++中,创建一个新的线程通常有两种方式:一是继承`QThread`类,二是使用...

    关于C#多线程的函数示例

    下面是一个带参数的线程函数示例: ```csharp public class MultiThreadExampleWithArgs { public void RunWithParameter(object data) { // 创建一个新的线程并传入一个带参数的方法 Thread thread = new ...

    C++多线程封装成类使用示例

    为了保证线程安全,我们使用`std::mutex`和`std::condition_variable`进行同步。 工作线程的实现如下: ```cpp void ThreadPool::worker() { while (!stop) { std::function()&gt; task; { std::unique_lock...

    多线程示例.rar

    5. **线程安全**:在多线程环境中,访问共享资源必须是线程安全的。这意味着需要使用同步原语来保护对共享数据的访问,以避免数据竞争。 6. **线程优先级**:Delphi允许设置线程的优先级,但应谨慎使用,高优先级...

    java多线程示例

    - 继承Thread类:创建一个新的类,继承自Thread类,重写其run()方法,然后创建该类的实例并调用start()方法。 - 实现Runnable接口:创建一个实现了Runnable接口的类,实现run()方法,然后将该类的实例传递给Thread...

    关于c#多线程示例

    在C#编程中,多线程是一个核心概念,它允许应用程序同时执行多个任务,从而提高程序的并发性和效率。在现代计算机系统中,多核处理器的普及使得多线程技术变得尤为重要。本示例将深入探讨C#中的多线程实现方法、应用...

    MFC用户界面线程的创建示例

    此外,为了确保线程安全,当工作线程修改UI元素时,可能需要使用`CSingleLock`或`CMultiLock`来实现互斥访问,防止数据竞争。 总的来说,这个MFC用户界面线程创建示例教会我们如何在C++环境中有效地管理多线程,...

    CVI 线程锁、线程安全变量实例

    在LabWindows/CVI的`多线程_线程锁_线程安全变量`示例中,你可能会发现以下几个关键点: 1. **线程创建与销毁**:使用`cvCreateThread()` 创建线程,并通过`cvExitThread()` 结束线程。 2. **线程锁的使用**:在...

    一个多线程示例程序及多线程常见问题介绍

    4. **线程安全**:确保在多线程环境中正确操作共享数据和对象。这可能需要使用原子操作、线程局部存储或者同步原语。 5. **异常处理**:线程可能会抛出未被捕获的异常,这可能导致线程终止,甚至整个应用程序崩溃。...

    C++11多线程示例

    在这个头文件中,定义了一个`std::thread`类,它是创建新线程的基础。下面是一个简单的例子,展示了如何创建一个执行特定函数的新线程: ```cpp #include #include void hello() { std::cout , World from ...

    delphi多线程精品示例

    `TThread`类是Delphi中线程的基础,它继承自`TComponent`,提供了一个创建和管理线程的基本框架。通过重写`Execute`方法,你可以定义线程的主要执行逻辑。 例如,`thread_managerD7`可能是一个线程管理组件,它可能...

    浅谈C#跨线程调用窗体控件(比如TextBox)引发的线程安全问题

    C#跨线程调用窗体控件时可能会引发线程安全问题,例如当多个线程操作同一个控件时,该控件可能会进入不一致的状态,出现争用情况和死锁等问题。因此,确保以线程安全方式访问控件非常重要。 在C#中,控件并不是线程...

    C# 多线程 进度条示例

    在“C# 多线程 进度条示例”中,我们关注的是如何在多线程环境中创建并管理一个进度条,以便用户能够直观地看到后台任务的执行进度。这涉及到以下关键知识点: 1. **线程**: C#中的`System.Threading`命名空间提供...

    C#多线程控件安全调用示例

    下面是一个简单的多线程控件安全调用示例: ```csharp using System; using System.Windows.Forms; public class Form1 : Form { private Button button1; private Label label1; public Form1() { button1 ...

Global site tag (gtag.js) - Google Analytics