/**
线程存在于进程当中,进程由系统创建。
创建新的执行线程有两种方法
注意:
  线程复写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. html5精品教程

    链接:http://pan.baidu.com/s/1ntr7yJ3 密码:7qvz链接:http://pan.baidu.com/s/1c0haxZM 密码:paok

  2. 设计模式 -- 中介者设计模式 (Mediator Pattern)

    中介者模式的定义:将多对多关系分散为一对多的关系,将网状结构变成星状结构,降低复杂度,提高扩展性. 角色: Mediator :抽象中介者角色,以抽象类的方式实现,生命具体对象,以及抽象方法: Con ...

  3. Unity3DGUI:常用控件

  4. 第一百一十九节,JavaScript事件入门

    JavaScript事件入门 学习要点: 1.事件介绍 2.内联模型 3.脚本模型 4.事件处理函数 JavaScript事件是由访问Web页面的用户引起的一系列操作,例如:用户点击.当用户执行某些操 ...

  5. JQuery-常用小组件

    常用的小组件记录 1. 单选框.复选框重置样式效果 参考: http://www.cnblogs.com/sanshi/p/4369375.html 三生石上 参考: http://www.jq22. ...

  6. Python学习笔记——基础篇【第五周】——常用模块学习

    模块介绍 本节大纲: 模块介绍 time &datetime模块   (时间模块) random   (随机数模块) os   (系统交互模块) sys shutil   (文件拷贝模块) j ...

  7. hdu 3410 Passing the Message(单调队列)

    题目链接:hdu 3410 Passing the Message 题意: 说那么多,其实就是对于每个a[i],让你找他的从左边(右边)开始找a[j]<a[i]并且a[j]=max(a[j])( ...

  8. C# ExcelHelper

    using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; ...

  9. 在GNU/Linux下设置与定时更换桌面壁纸

    1 简介 在电脑桌面设置一组可以定时更换的壁纸已经不是什么新奇的功能了.比如,Windows 7.KDE桌面环境都可以实现这样的效果.可是,自己目前使用的Debian系统并未安装KDE.GNOME这样 ...

  10. 4天html总结