`
wandejun1012
  • 浏览: 2689961 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

普通类和线程类的区别

    博客分类:
  • java
阅读更多

 

 

假设一个类是SubThread,它的init()方法实现了一个匿名内部类,另一个是Outer,这个类专门负责打印传入的字符串。

 

举例如下:

 

package germmy.home.testmultithread;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class LockTest {

	
	
	Outer outer=new Outer();
	
	public static void main(String[] args) {
		new LockTest().init();
	}
	
	
	void init(){
		new Thread(new Runnable() {
			public void run() {
				while(true){
					outer.output("zhangsanshigehaoren");
				}
			}
		}).start();
		
		new Thread(new Runnable() {
			public void run() {
				while(true){
					outer.output("taiwanxiangtaidu");
				}
			}
		}).start();
		
	}
	
	
}

 

 

Outer类如下:

 class Outer{
	
	Lock lock=new ReentrantLock();
	void output(String name){
		lock.lock();
		try {
			for(int i=0;i<name.length();i++){
				System.out.print(name.charAt(i));
			}
			System.out.println();
		} finally{
			lock.unlock();
		}
	}
	
}

 

 

 

我们可以简单的理解线程类和普通类之间的关系:

普通类好比是房东的房子,房子里面有个功能是上厕所。

线程类好比是搬家的工人。

 

实际的业务逻辑应该是放在普通类中的,线程类中应该没有什么逻辑,直接引用普通类,然后start()方法即可。

 

假设工人要进房间上厕所,给厕所上锁,这个功能也是普通类中自类的,和线程类没有关系。

 

 

 我的新博客

 

 

 

 

 

分享到:
评论

相关推荐

    vc++工作线程封装类

    用的是::CreateThread 封装了创建线程,停止线程,挂起线程,唤醒线程,设置线程优先性等一般普通功能都有,一个类,直接导入项目就可使用,注意是VC的,不是跨平台的!

    Java多线程程序设计入门

    Java为我们提供了线程类Thread来创建线程,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。下面是一个创建启动一个线程的语句:Thread thread1=new Thread(); file://声明一个...

    Java实验6多线程.doc

    本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)实验报告,基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java...

    武汉理工大学 面向对象与多线程综合实验 档案管理系统

    面向对象与多线程综合实验做的档案管理系统,包含三类使用人员:系统管理员,档案管理员,普通用户。一共要做七次迭代,每次迭代完成的任务不同。

    Java 线程

    Java提供了线程类Thread来创建多线程的程序。其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程。

    java中thread线程start和run的区别

    主要介绍了java中thread线程start和run的区别,run()是Runnable接口中定义的一个方法,是为了让客户程序员在这个方法里写自己的功能代码的。直接调用和普通的类调用自己的成员方法是没有任何区别的

    Java创建线程的两个方法

    其实,创建线程与创建普通的类的对象的操作是一样的,而线程是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程。要产生一个线程,有两种方法:  ◆需要从Java.lang.Thread类派生一个新的线程类,...

    Java2023年最新免费面试题及答案附答案汇总.md 免费下载,不需要积分

    普通类和抽象类有哪些区别 为什么线程通信的方法wait(), notify()和notifyAll()被定义在Object 类里 遍历一个 List 有哪些不同的方式?每种方法的实现原理是什么 String str="i"与 String str=new String("i")一样吗...

    Java面试题-面向对象、多线程.pdf

    (可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作 起来更简单; 我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事 情)。 - 多态性:多态性是指允许不同子...

    Java多线程实现银行排队叫号管理系统(GUI实现)

    • 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。 • 异步随机生成各种类型的客户,生成各类型用户的概率比例为: VIP客户:普通客户:快速客户 = 1 :6 :3。

    线程的常用方法介绍.docx

    我们会发现,调用start()方法才是 启动一个新的线程。调用run()方法只是主线程调用了一个类的一个普通方法。 getName()和setName() getName() 获取此线程的名字 setName() 设置此线程的名字

    银行业务调度系统优化版(多线程)

    客户办理业务所需时间有最大值和最小值,在该范围内随机设定每个VIP客户以及普通客户办理业务所需的时间,快速客户办理业务所需时间为最小值(提示:办理业务的过程可通过线程Sleep的方式模拟)。 各类型客户在其...

    java8源码-QuantaAndroidStu2020:多线程和网络请求直播课源代码

    多线程和网络请求直播课源代码 直播课内容概要 多线程/网络请求 (侧重讲使用方法/原理篇幅较长,有兴趣可以自行探索) 一.多线程 //主线程 负责ui交互逻辑、 子线程负责处理耗时操作 1.线程的几种写法(匿名接口类/...

    Java常见面试题整理出来了

    1.接口和抽象类的区别 ①抽象类里可以有构造方法,而接口内不能有构造方法。 ②抽象类中可以有普通成员变量,而接口中不能有普通成员变量。 ③抽象类中可以包含非抽象的普通方法,而接口中所有的方法必须是抽象的...

    易辅客栈模块3.9 [大漠免注册大漠多线程,大漠中英文版,大兵中文版,支持大漠定制

    修正:普通填表类错误 优化:修改部分代码,减少与精易的冲突性 新增:goto '以前的老的goto 废弃 更名为goto_old 新增:免注册调用大漠() '可以免注册调用大漠免费版本与收费版本,让免费版支持免注册调用不是梦 ...

    易语言-线程中调用易包演示

    线程中调用易包演示源码。 如果说易模块相当于C语言里面的lib文件,则易包就相当于dll文件,也就是说,易模块是在易程序之间建立静态共享,而易包是建立动态共享,避免以前易模块修改后需要重新编译所有使用了它的易程序...

    史上最全java面试,103项重点知识,带目录

    12. 普通类和抽象类有哪些区别? 6 13. 抽象类能使用 final 修饰吗? 6 14. 接口和抽象类有什么区别? 7 15. java 中 IO 流分为几种? 7 16. BIO、NIO、AIO 有什么区别? 7 17. Files的常用方法都有哪些? 8 二、...

    Java内部类:你真得了解方法内部类吗?

    java内部类,相信很多人都使用过内部类,新建线程使用的匿名内部类,但是有很多人对内部类的一些概念处于模糊阶段,比如为什么方法内部类引用方法参数,方法参数必须设置为final,所以本文系统得整理了一下内部类...

    Java单服务加锁工具类

    Java加锁工具类。用于普通加锁。 可以用到的场景有: 1、多线程对同一数据进行处理时,通过此类进行简单加锁。 2、想保证后台同时,只有一个线程在处理某事情时。 3、更新数据库信息时。

    Java Thread 的 run() 与 start() 的区别.docx

    2) run: run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就...

Global site tag (gtag.js) - Google Analytics