多线程,进程

1.什么是多线程?

在一个进程中同时运行了多个线程,用来完成不同的工作,则称之为“多线程”,并且多个线程交替占用CPU资源,而非真正的并行执行,多线程的本质是抢CPU资源

2.在Java中创建线程的两种方法?

        继承java.lang.Thread类

        1.继承Thread类

        2.重写run()方法

        3.调用start()方法启动该线程

public class MyThread extends Thread{
    //重写run()方法
	public void run(){
		for(int i=1;i<100;i++){			System.out.println(
        Thread.currentThread().getName()+":"+i);
}}}
public static void main(String[] args) {
		MyThread thread = new MyThread();
		thread.start(); //启动线程

 

        实现java.lang.Runnable接口

         1.实现Runnable接口

        2.实现run()方法,编写线程执行体

        3.创建线程对象,调用start()方法启动线程

public class MyRunnable implements Runnable{
	public void run(){
		for(int i=1;i<100;i++){			System.out.println(
        Thread.currentThread().getName()+":"+i);
}}}
public static void main(String[] args) {
		MyRunnable myRunnable = new MyRunnable();
		Thread myThread = new Thread(myRunnable);	
		thread.start(); //启动线程}

 

3.操作线程的步骤?

 

4.直接调用run()和start()区别接调用run()和start()区别 ?

 5.比较两种创建线程的方式?

继承 Thread
编写简单,可直接操作线程
适用于单继承
实现 Runnable 接口
避免单继承局限性
便于共享资源

 

6.线程的五个状态?

 

7.线程的优先级?

从1-10,1最低,默认5,优先级高低表示抢占CPU概率的大小 

 8.线程礼让?

暂停当前线程,允许其他具有相同优先级的线程获得运行机会,只是提供一次同时抢资源的机会,自己也参与抢夺

9.线程上锁--synchronized关键字

访问修饰符 synchronized 返回类型 方法名(参数列表){……} 

 使用synchronized关键字修饰的代码块

synchronized(syncObject){

    //需要同步的代码

}

 解决:多个并发线程访问同一资源的同步代码块时?

  • 同一时刻只能有一个线程进入synchronizedthis)同步代码块
  • 当一个线程访问一个synchronizedthis)同步代码块时,其他synchronizedthis)同步代码块同样被锁定
  • 当一个线程访问一个synchronizedthis)同步代码块时,其他线程可以访问该资源的非synchronizedthis)同步代码

10.线程安全的类型

方法是否同步

 效率比较

适合场景

线程安全

多线程并发共享资源

非线程安全

单线程

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值