一个内部类的用法。
Inc inc = tt.new Inc();
Dec dec = tt.new Dec();
package spooner;
public class ThreadTest1 {
class Inc implements Runnable {
public void run() {
for (int i = 0; i < 100; i++) {
inc();
}
}
}
class Dec implements Runnable {
public void run() {
for (int i = 0; i < 100; i++) {
dec();
}
}
}
private int j;
public static void main(String args[]) {
ThreadTest1 tt = new ThreadTest1();
Inc inc = tt.new Inc();
Dec dec = tt.new Dec();
for (int i = 0; i < 2; i++) {
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
}
}
private synchronized void inc() {
j++;
System.out.println(Thread.currentThread().getName() + "-inc:" + j);
}
private synchronized void dec() {
j--;
System.out.println(Thread.currentThread().getName() + "-dec:" + j);
}
}
分享到:
相关推荐
在提供的"java线程内部类练习.rar"压缩包中,可能包含了几个示例,如"12"、"10"和"11",这些文件很可能是Java源代码文件,分别展示了不同的线程内部类使用场景。通过学习和分析这些代码,我们可以更好地理解和掌握...
当我们谈论使用内部类实现线程时,通常指的是非静态内部类(也称为成员内部类),因为它们能直接访问外部类的所有成员,包括私有变量和方法,这对于创建线程并与其关联的数据共享非常方便。 首先,让我们看看如何...
本篇文档主要探讨了两种实现Java多线程的数据共享方式:通过内部类和实现Runnable接口。以下是对这两种方法的详细解释: 1. **实现Runnable接口**: - **好处**:Java中的`Runnable`接口允许我们将线程逻辑(run()...
本篇将探讨两种在Java中实现多线程数据共享的方式:通过内部类和实现`Runnable`接口。 首先,让我们来看看如何使用`Runnable`接口实现数据共享。`Runnable`接口是Java提供的一种创建线程的方式,它允许我们将线程的...
由于内部类可以直接访问外部类的成员,这使得在多线程环境下管理共享资源变得更加方便。 五、内部类与接口 内部类可以实现一个或多个接口,这在需要一个类同时实现多个功能时非常有用。此外,匿名内部类可以快速...
易语言类内部多线程源码,类内部多线程,call,StartClass,类_取类指针,类_取类成员指针,CreateThread_class,方法1,方法2,方法3,方法4,取类指针,qqq,zzz,CreateThread,CloseHandle,HeapAlloc,HeapFree,GetProcessHeap,...
- **中断线程**:通过调用`interrupt()`方法可以请求线程停止执行,但实际停止需要线程内部配合检查`isInterrupted()`或捕获`InterruptedException`。 - **死锁**:当两个或更多线程相互等待对方释放资源而造成的一...
这可能意味着这个工具类内部维护了一个线程池,`execute()`方法将提交的任务放入线程池,由线程池负责调度和执行。 基于以上信息,我们可以推测`ThreadManager.java`文件可能包含以下内容: 1. `ThreadManager`类...
当你在类的方法内部调用`GetThis`时,它会返回调用该方法的对象实例的指针。这在处理类成员方法时非常有用,因为这样可以确保我们能够访问到正确对象的状态。 其次,"启动类线程"和"关闭类线程"是关于线程管理的...
匿名内部类广泛应用于多线程编程中,例如Thread类和Runnable接口的实现。匿名内部类也可以用来实现抽象方法和接口。 实例 1: 不使用匿名内部类来实现抽象方法 在这个例子中,我们定义了一个抽象类Person,并且在...
多线程线程间通信,可用于控制线程内部函数,做处理......................................................
C#模仿迅雷的多线程下载类提供了强大的下载功能,通过对代码的深入分析,我们可以理解其内部机制,并在此基础上进行优化和扩展,以满足不同的下载需求。无论是对于个人项目还是企业级应用,掌握多线程下载技术都将...
浅谈C#跨线程调用窗体控件引发的线程安全问题 C#跨线程调用窗体控件时可能会引发线程安全问题,例如当多个线程操作同一个控件时,该控件可能会进入不一致的状态,出现争用情况和死锁等问题。因此,确保以线程安全...
- **区别**:定时器本身不是一个线程,而是通过系统内部线程定时发送消息来实现。多线程则是通过创建独立的执行单元来进行任务的并行处理。 - **联系**:定时器可以结合多线程使用,例如在工作者线程中设置定时器来...
3. 封装回调函数:在多线程编程中,内部类常用来封装线程的回调函数,使代码结构清晰。 4. 减少代码重复:如果多个类有共同的行为,可以通过定义一个内部类来共享这些行为。 三、内部类的优缺点 优点: - 提高...
易语言远程线程注入类模块源码,远程线程注入类模块,设置超时时间,私_创建远程线程,打开进程号,取内部句柄,取进程ID,关闭打开句柄,远程申请内存,远程申请内存_文本,远程释放内存,远程执行代码,生成调用代码_数组,执行...
在`print.cpp`中,可能定义了一个类来管理打印任务,包括线程的创建、管理以及打印等级的控制。 5. **queue队列**:队列是常用的数据结构,常用于线程间的通信。例如,`std::queue`可以用来存储待打印的任务,线程...
6. 内部类与多线程:内部类在多线程编程中也发挥了重要作用,因为它可以轻松地实现线程的封装。比如,可以定义一个内部类实现Runnable接口,然后创建Thread对象来启动新线程。 7. 内部类与继承:内部类可以继承任何...