`
IO_oI
  • 浏览: 23076 次
社区版块
存档分类
最新评论

printf 对 线程同步 的影响(未完成)

    博客分类:
  • Java
阅读更多
public class Test implements Runnable {
	// 记录运行次数
	long times = 0;
	int id = 0;
	boolean flag = true;

	Test() {
		new Thread(this).start();
	}

	public void offAndCount() {
		if (flag)
			id++;
		flag = false;
	}

	public void on() {
		times++;
		System.out.print(""); //注释掉这句运行多次,取消注释再运行多次。分别记录 注释 与 未注释 运行的结果,可以发现print对线程同步有影响(猜测:print执行时间较长的原因) 
		flag = true;
	}

	public String runtime() {
		return "On() execute times==" + times+"   ID=="+id;
	}

	// 启动一个新线程
	public void createANewThread() {
		new Thread(new Runnable() {
			public void run() {
				while (true)
					try {
						Thread.sleep(1);
						//每隔1ms打开开关
						on();
					} catch (Exception e) {}
			}
		}).start();
	}

	@Override
	public void run() {
		createANewThread();
		//不断 关闭开关
		while (true)
			offAndCount();
	}

	public static void main(String[] args) {
		Test t = new Test();
		try {
			Thread.sleep(3000);
		} catch (Exception e) {}
		System.out.println(t.runtime());
		System.exit(0);
	}

}
分享到:
评论

相关推荐

    线程同步实验文档+源代码

    ### 线程同步实验与源代码解析 ...通过本次实验,我们不仅加深了对线程同步理论的理解,还掌握了在实际编程中如何应用这些理论来解决具体问题,这对于进一步探索高级多线程编程技术具有重要意义。

    Linux系统编程之线程同步

    线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。 举例1: 银行存款 5000。柜台,折:取3000;提款机,卡:取 3000。剩余:2000 举例2...

    计算机操作系统实验操作系统中的线程同步源码文档

    ### 计算机操作系统实验操作系统中的线程同步源码文档 #### 实验目的 通过本次实验,学生将能够深入理解并掌握以下几点: 1. **加深对线程的理解**:理解线程的基本概念及其在现代操作系统中的作用。 2. **Windows...

    [经典]linux线程编程-线程间通信(1).

    本文将详细介绍Linux中的线程同步机制,特别是互斥锁(Mutex)的使用方法及其原理。 #### 共享全局变量的危险性 在多线程环境中,如果多个线程共享同一个全局变量,并且没有适当的同步措施,那么可能会导致不可...

    C语言 之 多线程编程.doc

    `pthread_join`函数用于等待线程结束,防止主线程提前退出,导致线程未完成其工作。 总结起来,C语言的多线程编程涉及进程和线程的概念,以及线程的创建和同步。了解这些基础知识,开发者可以编写出高效的多线程...

    Linux多线程使用互斥量同步线程

    如果互斥量当前未被锁定,则线程可以获得该互斥量并对共享资源进行访问;一旦线程完成了对共享资源的操作,它会释放互斥量,从而允许其他线程获取该互斥量并访问资源。如果互斥量已被另一个线程锁定,则请求互斥量的...

    windows进程管理实验报告.doc

    3. **熟悉并能应用线程同步机制**:学会使用`WaitForSingleObject()`、`WaitForMultipleObjects()`等API来实现多线程之间的同步。 #### 实验环境配置 实验所需的硬件和软件环境包括: - **操作系统**:Windows 7 ...

    用户注册系统

    项目中使用了三种不同的多线程同步方法: 1. **基于全局变量的同步** - 实现思路:使用全局变量`a`作为同步信号,当`ThreadProc1`完成任务后将其值减一,`ThreadProc2`通过循环检查`a`的值来等待`ThreadProc1`完成...

    Sistope-多线程

    在Sistope这样的系统中,多线程的管理还包括线程同步和互斥锁,以防止多个线程同时访问同一资源导致的数据竞争问题。`pthread_mutex_t`类型代表一个互斥锁,通过`pthread_mutex_init()`, `pthread_mutex_lock()`, 和...

    实验二-Linux进程、线程及编程.doc

    它会在调用`exit`系统调用前检查文件的打开状态,并尝试将文件缓冲区中的内容写回到文件中,以确保所有未完成的I/O操作得到妥善处理。 3. **`wait()`与`waitpid()`** - `wait()`函数用于使父进程阻塞,直到一个子...

    C++设置事件通知线程工作的方法

    在Windows应用程序设计中,线程间的通信和同步是至关重要的。事件(Event)是一种用于线程间同步的内核对象,它允许一个或多个线程等待某个特定条件的发生。本篇文章将详细讲解如何使用C++设置事件通知线程工作,这...

    Linux多核编程

    2. **线程同步**:使用互斥锁(`pthread_mutex_t`)或其他同步机制确保线程间数据的一致性和正确性。 3. **线程结束**:使用`pthread_join`等待所有线程完成。 通过这种方式,可以在多核环境中有效地利用资源,提高...

    Linux网络编程:用C语言实现的聊天程序(同步通信)[参考].pdf

    输入完成后,消息会被发送到服务器,这部分代码未在给出的片段中显示,但通常会使用`send()`函数完成此操作。 8. **字符串处理**: 在这段代码中,可以看到对字符串的处理主要体现在接收和打印消息上,`bzero()`...

    我们操作系统考试的两道大题

    3. **线程同步:** 通过Sleep函数实现线程间的延迟,避免所有线程同时访问共享资源。 4. **资源计数:** 通过writecount变量跟踪当前使用资源的数量,确保不会超过设定的最大值。 **并发编程中的常见同步问题及解决...

    南京大学操作系统实验-实现接受键盘输入回显到屏幕上的程序.zip

    一个线程负责读取键盘输入,另一个线程负责显示回显,这需要理解线程同步和互斥的概念,以防止数据竞争问题。 7. **编程语言和环境**:实验描述中并未指定编程语言,但根据常见实践,可能是C、C++或Python等。选择...

    NVIDIA CUDA计算统一设备架构参考手册2.0

    如果流未完成,返回cudaErrorNotReady;如果失败,则返回其他错误码。 **示例代码**: ```c cudaStreamQuery(stream); ``` **注意事项**:在流操作完成后进行查询可以避免不必要的等待时间。 ###### 1.3.3 ...

    OpenMP并行程序设计

    总之,OpenMP提供了一种高效、简洁的方法来实现共享内存环境下的并行编程,但同时也需要开发者考虑线程间的同步、数据一致性等问题。对于想要快速入门并行编程的IT从业者来说,学习OpenMP是一个很好的起点,因为它...

    华为嵌入式笔试

    线程同步机制 第九题中提到的`CSingleLock`是一个用于同步多个线程访问共享资源的机制,它确保了在多线程环境中数据的一致性和完整性。 ### 9. 字体结构与渲染 第十题中,`NEWTEXTMETRIC`是一个与字体相关的结构体...

    005、简单输入输出控制.7z

    线程同步机制如锁、信号量等在此起着关键作用。 10. **I/O复用技术**:包括select、poll和epoll等,它们允许一个线程同时监视多个文件描述符,提高了高并发I/O场景下的效率。 总之,简单输入输出控制是计算机科学...

Global site tag (gtag.js) - Google Analytics