/**
线程存在于进程当中,进程由系统创建。
创建新的执行线程有两种方法
注意:
  线程复写run方法,然后用start()方法调用,其实就是调用的run()方法,只是如果直接启动run()方法,
  那么就会出现线程调用结束后再执行主函数的情况。另一种情况是用start()说多线程都在抢夺执行权,要明确的是:某一时刻,只能 有一个程序在执行,多核除外.
  同时注意线程优先级用0-5表示
    1、Real-time:实时
2、High:高
3、Above normal:高于标准
4、Normal:标准
5、Below normal:低于标准
6、Idle:空闲。
第一种:将类声明为Thread的子类。该子类重写Thread类的run方法,之后就可以分配并且启动该子类的实例。
第二种:声明实现Runnable的接口类。在该类实现run()方法,然后分配该类实例,在创建Thread时作为一个参数传递并启动。Runnable为非Thread子类的类提供了一种激活的方式。
因为接口实现的Thread的接口类并不是线程,所以使用的时候要先创建该类然后创建线程并把该类对象传进创建的线程类。
这两种方式的区别:
第二种实现的方式,也就是实现接口,避免了但继承的局限性,一般用这种。
还有就是线程代码存放位置不同。接口方法:代码放在接口子类的run()方法中;继承方法:代码放在Thread子类的run()方法中。
**/
class Demo extends Thread//implements Runnable
{
public void run()
{
for(int x=0;x<60;x++)
System.out.println(Thread.currentThread()+"子线程运行");
}
}
class ThreadTest1
{
public static void main(String[] args)
{
//继承方式:extends
Demo demo= new Demo();
demo.start();
for(int x=0;x<60;x++)
System.out.println("主线程运行");
/**实现接口方式:implements
Demo demo = new Demo();
Thread td1 = new Thread(demo);
Thread td2 = new Thread(demo);
Thread td3 = new Thread(demo);
Thread td4 = new Thread(demo);
td1.start();
td2.start();
td3.start();
td4.start();
这样的好处就是线程单独创建,不会造成在extends中类似的困扰,就是说“票”不会重复,同时好处在上边注释中有说
**/
}
}

线程的实现方法以及区别 extends Thread、implements Runable的更多相关文章

  1. 线程的状态有哪些,线程中的start与run方法的区别

    线程在一定条件下,状态会发生变化.线程一共有以下几种状态: 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法. ...

  2. 02_线程的创建和启动_继承Thread方式

    [简述] java使用Thread类代表线程,所有的线程都必须是Thread或者其子类的实例. 每个线程的任务就是完成一定的任务,实际上就是执行一段程序流. [创建并启动多线程的步骤(集成Thread ...

  3. 线程的使用方法start run sleep join

    今天回顾了Java的线程的一些知识 例1:下面代码存有详细的解释 主要是继承Thread类与实现Runnable接口 以及start()和run()方法 package com.date0607; / ...

  4. Java 线程第三版 第四章 Thread Notification 读书笔记

    一.等待与通知 public final void wait() throws InterruptedException      等待条件的发生. public final void wait(lo ...

  5. day 34线程的其他方法,线程池

    线程的其他方法:  from threading import Thread,current_thread: currrent_thread().getName()  获取线程的名称 current_ ...

  6. 并发编程 - 线程 - 1.开启线程的两种方式/2.进程与线程的区别/3.Thread对象的其他属性或方法/4.守护线程

    1.开启线程的两种方式: 进程,线程: 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合)而线程才是cpu上的执行单位) 1.同一个进程内的多个线程共享该进程内的地址资源 2.创建线 ...

  7. Python之路(第四十二篇)线程相关的其他方法、join()、Thread类的start()和run()方法的区别、守护线程

    一.线程相关的其他方法 Thread实例对象的方法 # isAlive(): 返回线程是否活动的. # getName(): 返回线程名. # setName(): 设置线程名. ​ threadin ...

  8. Java线程中yield与join方法的区别

    长期以来,多线程问题颇为受到面试官的青睐.虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用.之前,我讨论了一个w ...

  9. Java线程中run和start方法的区别

    http://bbs.csdn.net/topics/350206340 Thread类中run()和start()方法的区别如下:run()方法:在本线程内调用该Runnable对象的run()方法 ...

随机推荐

  1. 傲梅分区助手专业版 v6.2 中文免费版

    软件名称: 傲梅分区助手专业版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP / Win2008 软件大小: 9.1MB 图片预 ...

  2. YUM变量

    有一个简单的python命令可以看到yum的 releaserver.arch.basearch的值 /usr/bin/python -c 'import yum, pprint; yb = yum. ...

  3. CentOS7 安装 OpenSSL 1.0.1m 和 OpenSSH 6.8p1

    # 下载软件 wget http://zlib.net/zlib-1.2.8.tar.gz wget ftp://ftp.openssl.org/source/openssl-1.0.1m.tar.g ...

  4. CodeForces 687B Remainders Game

    数论. 如果$x$不唯一,假设存在两个解,较大的为${x_1}$,较小的为${x_2}$. 那么, $\left\{ {\begin{array}{*{20}{c}}{{x_1}\% {c_i} = ...

  5. 杂谈3之English

    1.面向过程(OPP):Orient Procedure Program (C语言) 2.面向对象(OOP):Orient ObjectProgram(Java) 3.面向对象的三大特征:继承Inhe ...

  6. java 缓存ehcache的使用(使用方式一)

    实体要序列化 resource文件夹下建立 ehcache.xml <?xml version="1.0" encoding="UTF-8"?> & ...

  7. php学习笔记——表单

    13.表单 1)GET vs. POST GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value ...

  8. 特性(Attributes)

    用以将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联.特性与程序实体相关联后,即可在运行时用反射技术查询特性. 例如,在一个方法前标注[Obsolete]特性,则调用该方法时VS则会提示该 ...

  9. SharePoint:备份和还原

    注意事项: 1.备份和还原最好都用PowerShell,用时候用管理中心会遇到错误. 2.备份PowerShell要注意数据库服务器名,要与管理中心的数据库服务器一致,用ip可能会报错. Restor ...

  10. QDataStream对QVector的序列化

    最近发现QDataStream这个好东东,序列化发送数据很方便,与大家分享一下. 客户端: line.h #ifndef LINE_H #define LINE_H #include <QStr ...