首页 > 代码库 > 线程及其创建的方式
线程及其创建的方式
线程主要发挥作用的时候:当一个线程所运行的I/O被堵塞的时候,同一进程中的其它线程能够使用CPU来进行计算。
这样。就提高了程序的运行效率。
状态:执行、就绪(等待被调用)、堵塞(等待I/O资源)
两种创建方法:
- 继承Thread类,并override当中的run()方法(当一个类没有继承其它类的时候。适合用这样的方法)
- 实现Runnable接口,并实现run()方法(当一个类已经继承另外一个类的时候。适合用这样的方法)
通过使用自己定义的构造方法传递各种參数。
启动:获得Thread对象后调用start()方法。
方法一:继承Thread类
public class MyThread1 extends Thread { public MyThread1(String name) { super(name); } public void run() { System.out.println(this.getName()); } public static void main(String[] args) { Thread t1 = new MyThread1("阿三"); t1.start(); } }
方法二:实现Runnable接口
public class MyThread implements Runnable { private String name; public MyThread(String name) { this.name = name; } @Override public void run() { System.out.println(name); } public static void main(String[] args) { Thread tt1 = new Thread(new MyThread("张三")); tt1.start(); } }
普通情况下,能够使用一个内部类来定义另外一个线程:
/** * 启动子线程的方式(使用内部类定义另外一个线程) * @author XuJijun * */ public class MyThread { public static void main(String[] args) { (new MyThread()).new AnotherThread("张三").start(); } /** * 内部类,实现子线程 * */ private class AnotherThread extends Thread{ private String msg; /* * 加一个參数,用于接收主线程的信息 */ public AnotherThread(String msg) { super(); this.msg = msg; } @Override public void run() { System.out.println("Hello " + msg); } } }
等待和唤醒机制:
使用Object.wait()和Object.notify(),必须在同步方法或同步块里调用
使用join()方法等待另外一个线程的终止,如:
a.join(); System.out.print("End"); //等待线程a结束后再打印出“End”
sleep()和wait()的差别:
- sleep():占用CPU资源。或被调度走变成就绪状态
- wait():不占用CPU资源。等待被notify()唤醒
(原创文章,转载请注明转自Clement-Xu的csdn博客:http://blog.csdn.net/clementad/article/details/47027425)
线程及其创建的方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。