0810-线程同步题:
启动4个线程,向4个文件A,B,C,D里写入数据,每个线程只能写一个值。
线程1:只写1
线程2:只写2
线程3:只写3
线程4:只写4
4个文件A,B,C,D。
程序运行起来,4个文件的写入结果如下:
A:12341234。。。。
B:23412341。。。。
C:34123412。。。。
D:41234123。。。。
import java.io.*;
class FThread implements Runnable{
int iStart;
String file;
public FThread(int iStart,String file){
this.iStart=iStart;
this.file=file;
}
public void writeFile(){
try{
FileWriter fw=new FileWriter(file);
int wi=iStart;
int count=0;
while(count<10){
if((wi=wi%5)==0){ //注意这里
wi=1;
}
fw.write(new Integer(wi).toString()); //注意这里
wi++;
count++;
}
fw.flush();
fw.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
public void run(){
this.writeFile();
}
}
public class GThread{
public static void main(String[] args){
FThread ft1=new FThread(1,"1.txt");
FThread ft2=new FThread(2,"2.txt");
FThread ft3=new FThread(3,"3.txt");
FThread ft4=new FThread(4,"4.txt");
Thread t1=new Thread(ft1);
Thread t2=new Thread(ft2);
Thread t3=new Thread(ft3);
Thread t4=new Thread(ft4);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
分享到:
相关推荐
【标题】:“NET面试题-多线程编程与线程同步1” 【描述】:本篇文章主要探讨.NET框架下的多线程编程与线程同步相关的面试问题,包括线程与进程的区别、GUI线程访问控件限制、后台线程与前台线程、锁的使用以及线程...
线程同步是多线程编程中的关键概念,用于解决并发执行时可能出现的数据竞争问题,确保对共享资源的正确访问和管理。在Java中,线程同步主要通过`synchronized`关键字来实现,防止多个线程同时访问临界区,以避免出现...
在Java编程领域,线程是并发处理的核心概念,它允许程序在同一时间执行多个任务。面试中,线程问题经常被用来测试候选人的并发处理能力和对Java内存模型的理解。以下是一些关于Java线程的常见面试知识点,这些内容...
#### 三、线程同步与生命周期管理 **7. 线程同步方法** - **`wait()`**:使线程等待,并释放锁。 - **`sleep()`**:使线程睡眠一段时间,不释放锁。 - **`notify()`**:唤醒等待池中的一个线程。 - **`...
6. **线程的同步机制带来的问题:死锁**: - 发生死锁时,两个或多个线程各自持有一个资源但又等待对方释放资源。 - 解决方法:避免循环等待、使用超时机制等。 7. **Lock的使用**: - 使用`ReentrantLock`类来...
1. **同步机制**:包括`synchronized`关键字和`Lock`接口,用于控制对共享资源的访问,确保同一时间只有一个线程可以执行特定代码块。 2. **volatile关键字**:用于标记共享变量,确保所有线程都能看到该变量的最新...
- **ReentrantLock**:是 Java 提供的可重入互斥锁,比 `synchronized` 更灵活,支持公平锁、非公平锁,以及条件变量(Condition),可以实现更复杂的线程同步策略。 理解并掌握这些线程多线程的概念和用法,对于...
这些题目涵盖了 JAVA 多线程编程的基本概念和技术,包括线程的生命周期、线程同步、线程状态、线程优先级、线程安全等方面。 一、单项选择题 在单项选择题中,我们可以看到各种关于 JAVA 多线程编程的基本概念和...
- 线程同步(Synchronization)是为了防止多个线程同时访问共享资源而产生的数据不一致问题。在Java中通过关键字synchronized来实现同步。 - 线程互斥(Mutual Exclusion)是指多个线程在同一时刻只有一个能进入...
本文将围绕“多线程面试题”这一主题,深入探讨相关概念、技术及其应用。 1. **线程的概念**:线程是程序执行的最小单位,一个进程可以有多个线程同时执行任务,提高了程序的运行效率。 2. **Java中的线程创建方式...
- 同步机制:掌握synchronized关键字,了解锁的概念,包括可重入锁、死锁、活锁和饥饿状态。 - 线程池:熟悉ExecutorService和ThreadPoolExecutor,以及线程池的配置和优化。 - 并发工具类:了解...
这些示例有助于理解Java中多线程运行的原理以及如何创建线程和控制线程同步。 通过理解上述知识点,我们可以更好地设计和实现多线程程序,确保程序在并发环境下既能够高效地执行多任务,也能够正确地处理共享数据,...
".net开发人员面试题-多线程" .NET 多线程是现代 CPU 多核背景下的技术,能够充分发挥 CPU 资源。多线程问题可以用来评估面试者的技术深度和知识广度。 多线程的概念 多线程是一种编程技术,允许多个线程同时执行...
为了解决这个问题,Java提供了多种线程同步机制,包括`synchronized`关键字、`volatile`关键字、`java.util.concurrent`包中的工具类等。例如,`synchronized`可以保证同一时间只有一个线程访问特定代码块,防止竞态...
在实际应用中,我们还需要关注线程同步和通信问题,以避免竞态条件和死锁。Java提供了多种同步机制,如`synchronized`关键字、`wait()`、`notify()`和`notifyAll()`方法,以及`java.util.concurrent`包下的高级工具...
11. **暂停线程**:可以使用`Thread.sleep()`方法让线程暂停一段时间,或者在同步代码块中调用`wait()`方法,但注意`wait()`需要捕获InterruptedException。 线程在Java编程中扮演着重要角色,理解和掌握线程的原理...
5. **线程同步**: - `synchronized`关键字:用于控制多线程对共享资源的访问,实现互斥和可见性。 - `volatile`关键字:确保多个线程对共享变量的修改可见性,但不保证原子性。 - `Lock`接口及实现:提供比`...
2. **线程同步与互斥**:为避免多线程间的竞态条件,需要使用同步机制。C++提供了`std::mutex`来实现互斥锁,保证同一时间只有一个线程访问共享资源。`std::lock_guard`是RAII(Resource Acquisition Is ...
12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 ...
12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 ...