线程及其创建的方式

线程主要发挥作用的时候:当一个线程所执行的I/O被阻塞的时候,同一进程中的其他线程可以使用CPU来进行计算。这样,就提高了程序的执行效率。

状态:运行、就绪(等待被调用)、阻塞(等待I/O资源)

两种创建方法
  1. 继承Thread类,并override其中的run()方法(当一个类没有继承其他类的时候,适合用这种方法)
  2. 实现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


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值