`
蜉蝣人生
  • 浏览: 4509 次
  • 性别: Icon_minigender_1
  • 来自: 重庆市
文章分类
社区版块
存档分类
最新评论

Java多线程操作List

    博客分类:
  • JAVA
阅读更多
package com.hlss;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
* 类描述:多线程处理List
* @author Calvin Wu
*/
public class MultiThread {

// 用Collections.synchronizedList让list线程安全
public final static List<Long> list = Collections.synchronizedList(new ArrayList<Long>());

public static void main(String[] args) {
// 为List添加100个数据
for (int i = 1; i <= 100; i++) {
list.add(Long.valueOf(i));
}

MyThread myThread = new MyThread();
// 开启四个线程处理list数据
Thread t1 = new Thread(myThread);
t1.setName("线程1");
t1.start();

Thread t2 = new Thread(myThread);
t2.setName("线程2");
t2.start();

Thread t3 = new Thread(myThread);
t3.setName("线程3");
t3.start();

Thread t4 = new Thread(myThread);
t4.setName("线程4");
t4.start();
}

}



********************************************************************



package com.hlss;

import java.util.List;

public class MyThread implements Runnable {

private final List<Long> list = MultiThread.list;

@Override
public void run() {
for (int i = 0; i < list.size();) {
// 同步list,打印数据并删除该数据
synchronized (list) {
try {
//当前线程睡眠,让其它线程获得执行机会
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ":" + list.get(i));
list.remove(i);
}
}
}
}



********************************************************************

运行结果:

线程1:1
线程1:2
线程1:3
线程4:4
线程4:5
线程4:6
线程4:7
线程3:8
线程2:9
线程2:10
线程4:11
线程4:12
线程1:13
线程2:14
线程3:15
线程3:16
线程3:17
线程3:18
线程3:19
线程3:20
线程3:21
线程3:22
线程3:23
线程3:24
线程3:25
线程3:26
线程3:27
线程1:28
线程4:29
线程4:30
线程3:31
线程2:32
线程2:33
线程2:34
线程2:35
线程4:36
线程4:37
线程1:38
线程2:39
线程3:40
线程3:41
线程1:42
线程1:43
线程1:44
线程1:45
线程4:46
线程3:47
线程3:48
线程2:49
线程2:50
线程4:51
线程1:52
线程2:53
线程3:54
线程1:55
线程1:56
线程4:57
线程4:58
线程3:59
线程2:60
线程2:61
线程2:62
线程2:63
线程4:64
线程4:65
线程4:66
线程1:67
线程2:68
线程2:69
线程3:70
线程3:71
线程3:72
线程1:73
线程1:74
线程4:75
线程3:76
线程3:77
线程2:78
线程2:79
线程2:80
线程2:81
线程2:82
线程4:83
线程4:84
线程4:85
线程4:86
线程4:87
线程4:88
线程4:89
线程4:90
线程4:91
线程4:92
线程4:93
线程4:94
线程4:95
线程4:96
线程1:97
线程1:98
线程2:99
线程3:100
分享到:
评论

相关推荐

    详解Java多线程处理List数据

    Java多线程处理List数据是指在Java编程中,使用多线程技术来处理List数据的操作。这种操作可以提高程序的执行效率和性能,特别是在处理大规模数据时。下面将详细介绍Java多线程处理List数据的知识点。 一、什么是...

    java多线程处理数据库数据

    本主题将深入探讨如何使用Java的并发包(java.util.concurrent)来实现多线程对数据库数据的批量处理,包括增、删、改等操作。 首先,我们需要了解Java中的线程基础。线程是程序执行的最小单位,一个进程可以包含多...

    java多线程分页查询

    ### Java多线程分页查询知识点详解 #### 一、背景与需求分析 在实际的软件开发过程中,尤其是在处理大量数据时,如何高效地进行数据查询成为了一个关键问题。例如,在一个用户众多的社交平台上,当用户需要查看...

    java多线程查询数据库

    综上所述,"java多线程查询数据库"是一个涉及多线程技术、线程池管理、并发控制、分页查询等多个方面的复杂问题。通过理解和掌握这些知识点,我们可以有效地提高数据库操作的效率和系统的响应速度。

    java多线程实现大批量数据导入源码

    本项目以"java多线程实现大批量数据导入源码"为题,旨在通过多线程策略将大量数据切分,并进行并行处理,以提高数据处理速度。 首先,我们需要理解Java中的线程机制。Java通过`Thread`类来创建和管理线程。每个线程...

    Java多线程程序案例

    根据给定文件的信息,我们可以提炼出以下关于Java多线程程序设计的知识点: ### Java多线程基础 在Java中,多线程是通过`Thread`类或实现`Runnable`接口来实现的。多线程可以提高程序的执行效率,尤其是在处理CPU...

    JAVA模拟多线程给多用户发送短信

    以上就是本文的主要知识点,涉及到JAVA中的多线程编程、线程的创建与管理、集合的分割操作以及简单的面向对象设计。对于需要学习JAVA并发编程和网络编程的开发者来说,本文提供了一个很好的实例来加深理解,并且可以...

    多线程并行执行,汇总结果

    "CountDownLatch" 和 "Thread" 是Java编程语言中实现多线程并行执行的关键工具,它们有助于提高程序的运行效率和响应速度。 **多线程并行执行** 多线程并行执行是指在同一个程序中同时运行多个线程,每个线程负责...

    java实现多线程下载

    2. **Java多线程实现**: - 实现方式一:继承`Thread`类。创建一个新的类,继承自`Thread`,重写`run()`方法,然后创建该类的实例并调用`start()`方法启动线程。 - 实现方式二:实现`Runnable`接口。创建一个类,...

    java多线程ftp 上传下载

    以下是一些关于使用Java多线程FTP上传和下载的关键知识点: 1. **FTPClient初始化**:创建`FTPClient`对象,并设置连接参数,如主机名、端口号、用户名和密码。使用`connect()`方法建立与FTP服务器的连接,然后调用...

    基于java swing的多线程电梯调度模拟

    总的来说,这个项目涉及到Java多线程编程、GUI设计、对象间的通信以及线程同步等多个核心概念,是学习和实践Java并发编程的好例子。通过理解和分析这个项目,开发者不仅可以深入理解Java的并发机制,还能掌握如何在...

    Java多线程安全集合

    在Java编程中,多线程安全集合是程序员在并发环境下处理数据共享时必须考虑的关键概念。这些集合确保了在多个线程访问时的数据一致性、完整性和安全性,避免了竞态条件、死锁和其他并发问题。Java提供了一系列的线程...

    java实现多线程购票系统

    本文将深入探讨如何使用Java实现一个多线程购票系统,并涉及同步锁机制以及集合的减法操作。 首先,我们要创建一个`Ticket`类,代表票务对象,包含票号和座位信息。这个类应该包含必要的属性和方法,例如获取和设置...

    Java多线程--让主线程等待所有子线程执行完毕

    ### Java多线程--让主线程等待所有子线程执行完毕 #### 核心知识点解析 在Java多线程环境中,让主线程等待所有子线程执行完毕是一个常见的需求,尤其是在处理大量数据或进行高性能计算时。这不仅有助于正确测量...

    java多线程实现-tcp端口扫描

    在本项目"java多线程实现-tcp端口扫描"中,我们利用多线程技术来加速TCP端口扫描的过程。TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,广泛应用于网络通信中。端口扫描是网络安全检测和...

    java多线程URL方式下载单个大文件

    然后,我们引入`java.nio`包,这个包提供了非阻塞I/O操作,使得在多线程环境下处理数据更高效。特别是`java.nio.channels.Channels`和`java.nio.file.Files`类,它们可以帮助我们将输入流转换为通道,并将数据写入到...

    java基础,多线程,反射

    首先,我们来讨论Java多线程。多线程允许程序同时执行多个独立的任务,极大地提高了应用程序的效率和响应性。在Java中,可以使用`Thread`类或实现`Runnable`接口来创建线程。线程间通信和同步是多线程编程的关键,...

    深入Java多线程和并发编程

    ### 深入Java多线程与并发编程 在当今高度发展的信息技术领域中,随着硬件技术的进步和软件架构设计的复杂化,多线程与并发编程成为提高程序执行效率、增强系统性能的关键技术之一。本篇文章将围绕Java多线程与并发...

    java多线程设计模式详解

    在深入探讨Java多线程设计模式的知识点之前,让我们首先明确多线程编程在Java中的地位和作用。Java自诞生之日起就内置了对多线程编程的支持,这使得开发能够充分利用多核处理器性能的应用程序成为可能。多线程设计...

    java 多线程抓取去哪儿qunar机票数据

    本文将深入探讨如何使用Java多线程来抓取去哪儿网(qunar)的机票数据,同时涉及httpclient和jsoup库的使用。 一、Java多线程基础 Java中的多线程主要通过Thread类或者实现Runnable接口来创建。通过继承Thread类,...

Global site tag (gtag.js) - Google Analytics