多线程的创建

1.为什么要使用多线程

因为在日常生活,我们在操作的时候,需要在一个界面中同时实现多个功能。

2.多线程的创建

多线程的创建有两种方法

    1.使用继承Thread类的方式创建

     2.使用实现Runnable的方式实现创建

1.

第一步:创建一个类,使其继承Thread类
第二步:重写run方法
public class test extends Thread{
    @Override
    public void run() {
        for(int i=0;i<10;i++){
            System.out.println("这是分线程:"+i+"\n");
        }
    }
}
第三步:在main方法中调用test对象的start方法;
注:调用start方法的作用:
1.调用类中的run方法
2.创建一个线程
class main{
    public static void main(String args[]){
        test a=new test();
        a.start();
        for(int i=0;i<10;i++){
            System.out.println("这是主线程:"+i+"\n");
        }

    }

}

2. 


* 1.写一个实现Runnamble接口的类--注意要重写run方法
* 2.实例化此类的对象
* 3.new 一个Thead类的对象,将之前实例化的类当作参数传递给Thead对象当中
* 4.通过Thread类的对象调用statr()*/

public class MThead implements Runnable {
    @Override
    //重写的方法体,里面的内容是线程需要做的方法
    public void run() {
        System.out.println(" 小羊咩咩最可爱");
    }
}
class main{
    public static void  main(String args[]){
        MThead a=new MThead();//实例化对象
        Thread b=new Thread(a);//实例化Thread,将之前实例化的类当作参数传递给Thead对象当中
        b.start();

    }
}

两种方式的对比

相同的地方:

1.两种方式都需要调用start()方法,且两种方法调用的都是Thread类里面的start方法

2.两种方法都需要用到Thread类(但是使用的形式不同)。第一种是通过继承,第二种是new对象

不同的地方

1.第二种方法是通过implement接口runnable然后对run方法进行重写,第一种则是通过继承Thread类对run方法进行重写

2.第一种方法重点是在继承,第二种的重点是在接口

好啦,学完线程的创建之后,四不四感觉好简单呀,如果有问题,可以私信问我呀 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Duilib 是一个基于 C++ 的 UI 框架,支持多线程创建。在 Duilib 中,使用多线程创建 UI 界面可以提高程序的响应速度,增强用户体验。下面是一个简单的多线程创建 UI 界面的示例代码: ```c++ #include "stdafx.h" #include <Windows.h> #include "DuiLib/UIlib.h" using namespace DuiLib; class CMainFrame : public WindowImplBase { public: CMainFrame() {} virtual ~CMainFrame() {} virtual CDuiString GetSkinFolder() { return _T("skin"); } virtual CDuiString GetSkinFile() { return _T("MainWnd.xml"); } virtual LPCTSTR GetWindowClassName(void) const { return _T("DUIMainFrame"); } virtual LRESULT HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { if (uMsg == WM_CREATE) { // 创建子线程 HANDLE hThread = CreateThread(NULL, 0, ThreadProc, this, 0, NULL); CloseHandle(hThread); } return 0; } static DWORD WINAPI ThreadProc(LPVOID lpParameter) { CMainFrame* pThis = (CMainFrame*)lpParameter; // 在子线程中创建 UI 界面 pThis->Create(NULL, _T("Duilib 多线程创建示例"), WS_OVERLAPPEDWINDOW, WS_EX_WINDOWEDGE); pThis->ShowWindow(true); pThis->CenterWindow(); return 0; } }; int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { CPaintManagerUI::SetInstance(hInstance); CMainFrame mainFrame; mainFrame.Create(NULL, _T("Duilib 多线程创建示例"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE); mainFrame.CenterWindow(); mainFrame.ShowWindow(true); CPaintManagerUI::MessageLoop(); return 0; } ``` 在上述代码中,我们在主线程中创建了一个 `CMainFrame` 对象,并调用了 `Create` 方法创建了主窗口。在主窗口的 `HandleCustomMessage` 方法中,我们调用了 `CreateThread` 函数创建了一个子线程,并在子线程中调用了 `Create` 方法创建了一个 UI 界面。这样,我们就实现了在多线程创建 UI 界面的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值