多线程的创建

一、线程的概念:

CPU时间片:CPU执行时间被划分成多个小片,把小片依次分配个等待执行的程序,通过这样的交替执行,实现多个线程的“同时运行”。

进程:执行中的程序叫进程,拥有自己独立的地址空间和资源,进程间不能直接共享资源。是操作系统调度的最小单位。

线程:同一个进程可以进一步分成更小的执行单位,叫线程,每个线程可以执行不同的任务。是CPU调度的最小单位,能够充分利用CPU资源。同一进程下的进程可以很容易的实现资源的共享。

二、java线程的继承实现(继承Thread类,并覆盖Thread类中的run()方法,即可实现多线程。)

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.jju;

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author syzx
 */
public class TestThread01 {
    public static void main(String[] args) {
        GThread gThread1 = new GThread("ONE");
        GThread gThread2 = new GThread("TWO");
        gThread1.start();
        gThread2.start();
       
        System.out.println("程序执行完成!");
    }
}

class GThread extends Thread{
    String name;
    public GThread(){
        ;
    }
   
    public GThread(String name){
        this.name = name;
    }
    @Override
    public void run(){
        for(int i = 0; i < 10; i++){
             System.out.println("线程" + name);
            try {
                sleep(500);
            } catch (InterruptedException ex) {
                Logger.getLogger(GThread.class.getName()).log(Level.SEVERE, null, ex);
            }
        }      
    }
}


三、java线程实现接口的实现(实现Runnable接口,实现接口中的run()方法,即可实现多线程。启动方式与上边的方法不太一样)

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.jju;


import static java.lang.Thread.sleep;
import java.util.logging.Level;
import java.util.logging.Logger;


/**
 *
 * @author munication
 */
public class TestThread01 {
    public static void main(String[] args) {
GThread gThread1 = new GThread("ONE");
        GThread gThread2 = new GThread("TWO");
Thread thread1 = new Thread(gThread1);
Thread thread2 = new Thread(gThread2);
        
        thread1.start();
        thread2.start();
        
        System.out.println("程序执行完成!");
    }
}
class GThread implements Runnable{
    String name;
    public GThread(){
        ;
    }
    
    public GThread(String name){
        this.name = name;
    }
    @Override
    public void run(){
        for(int i = 0; i < 10; i++){
             System.out.println("线程" + name);
            try {
                sleep(500);
            } catch (InterruptedException ex) {
                Logger.getLogger(GThread.class.getName()).log(Level.SEVERE, null, ex);
            }
        }       
    }
}



posted @   叕叒双又  阅读(129)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示