`

通过Thread.sleep把任务平均分配给线程按顺序执行的小例子

阅读更多
package com.lj.test.JavaSe4;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.apache.commons.io.FileUtils;

public class App
{
	public static void main(String[] args) throws InterruptedException, IOException
	{	
		
		for(int i=0;i<100;i++){
			FileUtils.writeStringToFile(new File("d:/test.txt"), i+"\r\n", true);
		}
		
		
		ExecutorService service = Executors.newFixedThreadPool(3);
		
		List<String> urls=new ArrayList<String>();
		
		urls=FileUtils.readLines(new File("d:/test.txt"));
		
		
		while(urls.size()!=0){
			Hello h=new Hello(urls.get(0));
			service.submit(h);
			urls.remove(0);
			Thread.sleep(1);
		}
		
		service.shutdown();
	}
}

class Hello implements Runnable
{
	
	private String str;
	
	public Hello(String str)
	{
		this.str=str;
	}
	
	
	@Override
	public void run()
	{	
		System.out.println(Thread.currentThread().getName()+"-handle-"+str);
	}

}



只要加入了sleep, 就会按照123的顺序不停的循环调用线程, 而不是每个线程都再抢任务执行。
分享到:
评论

相关推荐

    关于Thread.Sleep(0)的说明

    - **任务调度**:在任务调度器或异步编程模型中,适度地使用`Thread.Sleep(0)`可以帮助平衡各个任务之间的执行顺序,避免因某些任务长时间占用CPU而导致的系统阻塞。 #### 5. 示例代码分析 ```csharp Thread th = ...

    JVM线程状态和Thread.sleep的实现原理探究.pdf

    在探究JVM线程状态以及Thread.sleep的实现原理时,我们首先需要了解Java线程与操作系统线程之间的关系。在Java虚拟机(JVM)中,每个线程通常都是以一对一的关系映射到操作系统线程上的。然而,尽管两者在实现上是...

    让线程按顺序执行8种方法.doc

    让线程按顺序执行8种方法 本文将介绍让线程按顺序执行的8种方法,涉及到多线程中许多常用的方法,不止为了知道如何让线程按顺序运行,更是让读者对多线程的使用有更深刻的了解。 一、使用线程的join方法 join()是...

    C#多线程之Thread中Thread.IsAlive属性用法分析

    Thread.Sleep(1); ``` 最后,一旦我们确认线程`oThread`正在运行,可能需要进行其他操作,如与线程通信、等待线程结束等。`oThread.Abort()`方法可以用来强制结束线程,但应谨慎使用,因为它可能导致资源泄露和...

    JAVA线程高级-线程按序交替执行

    - `Thread.sleep()`方法可以使当前线程进入阻塞状态,到指定时间后自动恢复。 - `join()`方法让调用的线程等待目标线程执行完毕后再继续执行。 2. **`synchronized`关键字**: - `synchronized`用于实现线程同步...

    C#利用System.Threading.Thread.Sleep即时输出信息的详解

    在C#编程中,`System.Threading.Thread.Sleep`是一个非常有用的函数,它允许当前线程暂停执行指定的时间量,以便让其他线程有机会运行。在本文中,我们将深入探讨如何利用`Thread.Sleep`来实现即时输出信息,特别是...

    3-Threads-Runnable-Sleep-Sync:并行编程示例:3使用Thread.sleep()的可运行实现的线程同步

    本示例“3-Threads-Runnable-Sleep-Sync”着重探讨了如何使用`Thread.sleep()`方法来控制线程的执行顺序和同步,从而避免资源竞争问题,确保程序的正确性。 首先,我们要理解`Thread.sleep()`方法的作用。它是一个...

    VC Thread多线程执行不同任务的例子.rar

    VC 创建多个 Thread多线程,用以执行不同任务的例子,运行程序后你可看到分别有红色、蓝色的小球,在沿各自不同的轨迹做运动,在代码中,我们创建了一个小球运动线程的主函数,分别用两个线程调用这个函数,但设定的...

    java中的线程休眠例子

    在这个例子中,创建了一个新的线程并在其run方法中调用`Thread.sleep(2000)`,主线程则继续执行,2秒后,休眠的线程结束休眠并打印出“线程结束休眠,继续执行”。 5. **线程优先级与休眠** 虽然Java提供了线程...

    Concurrent.Thread.js javascript多线程

    `Concurrent.Thread.js` 是一个由日本人编写的JavaScript多线程库,它为JavaScript环境提供了类似传统多线程的能力,帮助开发者更有效地管理任务,避免UI阻塞,提升应用性能。 `Concurrent.Thread.js` 库主要基于...

    多线程小例子

    这两个文件的代码可能会演示如何在线程之间共享数据,如何使用`join()`方法等待其他线程结束,或者如何通过`Thread.sleep()`方法控制线程的执行顺序。 在实际应用中,多线程广泛用于处理网络请求、UI更新、定时任务...

    python time.sleep()是睡眠线程还是进程

    在编写需要定期执行的任务时,如定时检查某个条件是否满足,可以利用 `time.sleep()` 来设置任务的执行间隔。 ```python import time while True: # 执行任务逻辑 time.sleep(60 * 60) # 每小时检查一次 `...

    MFC_Thread.rar_MFC 线程_MFC线程_createMultithread_mfc thread_thread

    在Windows编程环境中,Microsoft Foundation Class (MFC) 库提供...`MFC_Thread.rar`这个例子为我们提供了一个学习和实践MFC线程编程的好机会,通过查看和运行这个项目,我们可以更好地理解MFC线程的实用性和技术细节。

    多线程程序小例子实现

    此外,线程间的通信通常通过wait()、notify()和notifyAll()方法实现,这些方法需要在synchronized块内调用,用于控制线程的执行顺序。 六、示例代码 下面是一个简单的Java多线程示例,展示了如何创建、启动、终止...

    07 深入Thread类—线程API精讲.pdf

    总的来说,`Thread.sleep`和`Thread.yield`都是线程控制的手段,它们帮助开发者在并发环境中更好地管理线程的执行顺序和资源分配,以实现更高效的并发程序。理解并熟练运用这些方法对于编写高并发性能的Java程序至关...

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

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

    多线程执行任务具体实现

    在计算机科学中,多线程是一种程序设计技术,它允许应用程序同时执行多个不同的任务或子任务,从而提高系统的效率和响应速度。多线程在Java、C++、Python等编程语言中都有广泛的应用。本篇文章将深入探讨多线程执行...

    VB.NET 多线程入门的小例子

    Threading.Thread.Sleep(5000) Console.WriteLine("工作线程结束.") End Sub End Module ``` 这个小例子展示了如何创建一个后台线程来执行耗时任务,而不会阻塞主线程的执行。 总结,VB.NET提供了强大的多线程...

    Asp.Net 线程小例子

    System.Threading.Thread.Sleep(1); } // 当线程执行完毕,可以在适当的地方更新UI或者记录日志 Response.Write("线程任务完成!"); } ``` 在上述代码中,我们定义了一个名为`BackgroundTask`的方法,该方法将...

Global site tag (gtag.js) - Google Analytics