对线程了解不多,且不经常去用,最近想起,小小了解,且做个小demon和大家分享一下。
demon:两个线程,分别交替打印20次后中断。
package com.cn.ld.exercises;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @author Administrator
* Exercise
* 2011-9-22 下午04:55:55
* Description:
*/
public class Test {
private static AtomicInteger s_count = new AtomicInteger(0);
private static boolean stop ;
private static int n = 0 ;
private static int n1 = 0;
private static int n2 = 0;
public Test(boolean stop){
this.stop = stop ;
}
public class thread1 implements Runnable {
public boolean stop= false ;
public thread1(boolean stop){
this.stop = stop ;
}
public boolean getStop(){
return stop ;
}
public void run() {
synchronized (s_count) {
while (!stop) {
if(n2==21&&n1==21){
try {
Thread.sleep(10000);
stop = true ;
Thread.interrupted();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (n % 2 != 0) {
System.out.println(Thread.currentThread().getName()
+ ":运行了" + n1 + "次!");
n++ ;
n1++;
s_count.notify();
} else {
try {
s_count.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
public class thread2 implements Runnable {
public boolean stop= false ;
public thread2(boolean stop){
this.stop = stop ;
}
public boolean getStop(){
return stop ;
}
public void run() {
synchronized (s_count) {
while (!stop) {
if(n2==21&&n1==21){
try {
Thread.sleep(10000);
stop = true ;
Thread.interrupted();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (n % 2 == 0) {
System.out.println(Thread.currentThread().getName()
+ ":运行了" + n2 + "次!");
n++;
n2++;
s_count.notify();
} else {
try {
s_count.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
public static void main(String[] args) throws InterruptedException {
Test test = new Test(false);
Thread t1 = new Thread(test.new thread1(test.stop));
Thread t2 = new Thread(test.new thread2(test.stop));
t1.start();
t2.start();
}
}
写的很丑陋,还请见谅,大家尽可怕转
分享到:
相关推荐
对于并发编程,Java提供了丰富的线程API,包括Thread类和Runnable接口,以及ExecutorService和Future等高级并发工具。通过合理使用这些工具,开发者可以编写出高效并行运行的程序,充分利用多核处理器的优势。 在...
Python多线程机制初探的知识点如下: 一、多线程的必要性与应用场景 多线程编程是计算机程序中同时执行多个线程(或轻量级进程)的技术,目的是提高程序的执行效率。在多个场景下,多线程应用尤为必要,例如在网络...
### C++多线程编程初探 在C++编程领域,多线程技术是一种非常重要的技术,它允许程序同时执行多个任务,极大地提高了程序的效率和响应能力。本篇文章将基于给定的代码示例来深入探讨C++中的多线程编程。 #### 一、...
通过`CreateToolhelp32Snapshot`和`Process32First/Next`或`Thread32First/Next`函数,Spy++能够列出所有当前运行的进程和线程。源代码会展示如何遍历这些系统快照,并将信息显示在界面上。 在VC++环境下,源代码...
Python多线程机制初探 在编程领域,多线程是一种常见的并发执行方式,它允许多个任务在单个程序中同时运行。Python虽然不是天生的并行计算语言,但其标准库提供了对多线程的支持,使得开发者可以利用多核处理器的...
MYSQL 死锁检测机制初探 在 MySQL 中,死锁检测机制是一种重要的机制,用于检测和解决事务之间的死锁问题。在本文中,我们将详细介绍 MySQL 死锁检测机制的原理和实现。 一、死锁的定义和原理 在 MySQL 中,死锁...
Java的线程API,包括Thread类、Runnable接口以及ExecutorService,是实现并发编程的重要工具。 然后,游戏中的对象模型和状态管理是核心部分。Java的面向对象特性使得游戏中的角色、场景、道具等可以被抽象为类,...
`ThreadFunc`方法作为线程的执行体,通过`System.Threading.Thread.Sleep`方法模拟延时,每60秒检查当前时间,如果检测到时间已经过去一小时,则弹出消息框提醒用户休息。 ```csharp public static void ThreadFunc...
上一篇博客《C++11 并发指南一(C++11 多线程初探)》中只是提到了 std::thread 的基本用法,并给出了一个最简单的例子,本文将稍微详细地介绍 std::thread 的用法。 std::thread 在 <thread> 头文件中声明,因此使用 ...
### IBM之Java性能诊断工具初探—IBM Support Assistant的使用 #### 一、引言 随着信息技术的飞速发展,企业级应用系统变得越来越复杂,性能优化成为了保证系统高效稳定运行的关键因素之一。Java作为跨平台的语言...
【RxAndroidDemo:rxjava初探】 RxJava是一款在Java虚拟机上运行的反应式编程库,它将异步操作和事件驱动的编程模型引入到传统面向对象编程中。RxAndroid是RxJava的一个扩展,专门为Android平台进行了优化,使得...
C++11通过引入`std::thread`库,使得多线程编程可以直接在语言层面上进行,提高了代码的可移植性和易读性。`std::thread`类允许创建和管理线程,使得在C++中创建和控制线程就像操作其他对象一样简单。 使用`std::...
了解异步之前,我们先来看看Thread对象的升级版本Task对象: 1、Task对象的前世今生:Task对象是.Net Framework 4.0之后出现的异步编程的一个重要对象。在一定程度上来说,Task对象可以理解Thread对象的一个...
线程初探总结 在本章中,我们探讨了多线程编程的基础知识,包括进程和线程的概念、Java对多线程的支持、第一个多线程程序等。下一章,我们将深入探讨多线程编程的高级技术和实践经验。 多线程编程的应用 多线程...
通用机密计算平台技术初探 Python在大数据领域实践和思考 RT-Thread Smart生态之路 云计算与操作系统产业的发展 LAXCUS分布式操作系统-从0到1的实践 Mixed-Criticality System ,Scheduling in seL4 ...
Thread thread1 = new Thread(new ThreadStart( Count)); 其中的 Count 是将要被新线程执行的函数。 b.杀死线程 “杀死线程”就是将一线程斩草除根,为了不白费力气,在杀死一个线程前最好先判断它是否还活着...
OAuth2.0初探 学习编写 REST 接口测试用例 学习自定义 validator 学习自定义 filter 学习自定义 interceptor 自定义 aspect 学习 REST 接口多线程编程 Thread#start Thread#stop spring boot 1.5.20.RELEASE spring ...