Java总结--线程基础

所写内容有点琐碎,按照课本目录照本宣科,此稿权且当做自己的复习思路吧。


---------------------------------------------------------------------------------------------------------------------

1.线程进程的区别

面试时曾经被问到过,一个程序的内部也可以实现多任务的并发执行,其中每个任务被称为线程。

具体区别:1)每个进程有独立的代码和数据空间,进程切换开销较大。

     2)而同一类线程可以共享代码和数据空间,但每个线程就有独立的运行栈和程序计数器,线程切换开销较小。

2.创建线程:1)继承thread类

2)实现runnable接口

3.后台线程:指在后台运行的、为其他线程提供服务的线程,such as JVM的垃圾回收线程、定时器线程等,也称为守护线程。

当所有用户线程停止运行时,JVm也将退出。


//后台线程2有可能不会运行结束,因为主线程和线程一结束后,JVM检测到只有后台线程时 ,就退出了程序的运行。


public class TestDaemonThread {
	public static void main(String[] args) {
		Thread t1 = new MyRunner1(10);
		t1.setName("线程1");
		t1.start();
		Thread t2 = new MyRunner1(100);
		t2.setName("线程2");
		t2.setDaemon(true);
		t2.start();
		
		for (int i = 0; i < 10; i++) {
			System.out.println(Thread.currentThread().getName()+"i");
		}
		System.out.println("main----OVER");
		
	}
	
}
class MyRunner1 extends Thread{
	private int n;
	public MyRunner1(int n){
		this.n = n;
	}
	
	public void run(){
		for(int i = 0; i < n; i++)
			System.out.println(this.getName()+ ":" + i);
		System.out.println(this.getName()+"OVER");
	}
}


4.线程控制

线程5种状态:新建状态,就绪状态,运行状态,阻塞状态,终止状态。

5.线程串行化


//join方法会导致当前线程阻塞,知道sub线程运行结束,才会继续执行
public class TestJoin {
	public static void main(String[] args) {
		Thread t = new Thread(new MyRunner());
		t.start();
		try {
			t.join();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		for(int i = 0; i < 50; i++){
			System.out.println(Thread.currentThread().getName()+i);
		}
	}
}

class MyRunner implements Runnable{
	public void run() {
		for (int i = 0; i < 50; i++) {
			System.out.println("SubThread");
		}
	}
}



    


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值