Java的每日记-多线程

一.进程是什么?线程又是什么?
1.进程是指在系统中正在运行的应用程序,程序一旦运行就是进程;
在电脑上打开任务管理器就能看到自己运行了哪些进程。
2.线程是进程中的一个实体,是被系统独立调度和分派的基本单位;
比如在360杀毒软件中,我们既可以安全体检也可以清理垃圾,这里的安全体检是360杀毒软件中的一个线程,清理电脑中的垃圾也是一个线程。
3.进程是负责整个程序的运行,而线程是程序中具体的某个独立功能的运行;
二.线程的生命周期

三.线程的三种创建方式
//茴香豆的四种写法。好吧,正经一点。
1.通过继承 Thread 类本身

	//定义一个类来继承Thread类
class NewThread extends Thread {
    //重写run方法,来执行我想要执行的代码
    @Override
    public void run() {
        //线程要执行的代码
    }
}

public class test {
    public static void main(String[] args) {
    	//创建NewThread对象
        NewThread newThread = new NewThread();
         //启动线程
        newThread.start();
    }
}

2.通过实现Runnable接口

    //定义一个类来实现Runnable接口
class Task implements Runnable{
    //重写run方法,来执行我想要执行的代码
    @Override
    public void run() {
        //线程要执行的代码
    }
}

public class test {
    public static void main(String[] args) {
        //获取Task对象
        Task task = new Task();
        //创建线程类Thread的对象,并把任务类对象和定义的线程名字作为参数传递
        Thread newthread = new Thread(task, "新线程");
        //启动线程
        newthread.start();
    }
}

3.通过 Callable 和 Future 创建线程
public class CallableTest implements Callable {

@Override  
public Integer call() throws Exception {  
    // TODO Auto-generated method stub  

    int i = 0;  
    for (; i < 10; i++) {  
        // 当前线程  
        System.out.println("线程名" + ":" + Thread.currentThread()+ ":"+ i );  
    }  
    return i;  
}  

public static void main(String[] args) {  
    CallableTest call = new CallableTest();  
    FutureTask<Integer> fu = new FutureTask<Integer>(call);  
    Thread th = new Thread(fu, "有返回值的线程");  

    for (int i = 0; i < 1; i++) {  
        // 当前线程  
        System.out.println(Thread.currentThread().getName());  
        if (i == 0) {  
            // 启动第一个线程  
            th.start();  
        }  
    }
	
    try {  
        System.out.println("返回值是:" + fu.get());  
      } catch (Exception e) {  
        e.printStackTrace();  
    }  
  }  
}  

四.Thread常用方法

1	public void start()
使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
2	public void run()
如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。
3	public final void setName(String name)
改变线程名称,使之与参数 name 相同。
4	public final void setPriority(int priority)
 更改线程的优先级。
5	public final void setDaemon(boolean on)
将该线程标记为守护线程或用户线程。
6	public final void join(long millisec)
等待该线程终止的时间最长为 millis 毫秒。
7	public void interrupt()
中断线程。
8	public final boolean isAlive()
测试线程是否处于活动状态。

五.线程安全问题
不行,顶不住啦。再不睡觉我得猝死了!下次总结吧,告辞!
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值