导航:首页 > 使用方法 > 多线程常用的方法

多线程常用的方法

发布时间:2022-01-15 11:32:12

⑴ 创建多线程有几种方法

1、通过继承Thread类创建线程

(1).首先定义一个类去继承Thread父类,重写父类中的run()方法。在run()方法中加入具体的任务代码或处理逻辑。
(2).直接创建一个ThreadTest类的对象,也可以利用多态性,变量声明为父类的类型。

(3).调用start方法,线程启动,隐含的调用run()方法。

[java]view plain

⑵ java中实现多线程的方法有几种以及如何实现多线程

  1. 继承Thread类,然后重写run方法

  2. 实现Runnable接口,实现run方法

这是最常用的实现多线程的方式

⑶ java多线程方法有哪些

java实现线程常用到的方法有三种,供参考:

/**
*方法一:继承Thread类
*
*@authorqd
*
*/
{

@Override
publicvoidrun(){

System.out.println("run方法里面编写业务代码");
}

publicstaticvoidmain(String[]args){

MyThreadmyThread=newMyThread();
//调用start方法启动线程
myThread.start();

MyThread1myThread1=newMyThread1();
Threadthread=newThread(myThread1);
//调用start方法启动线程
thread.start();
}

}

/**
*方法二:实现Runnable接口
*
*@authorqd
*
*/
{

@Override
publicvoidrun(){

System.out.println("run方法里面编写业务代码");
}

}

/**
*方法三:实现Callable<T>接口优点:可以传参数,有返回值类型
*
*@authorqd
*
*/
<Integer>{

@Override
publicIntegercall()throwsException{
returnnull;
}

}

⑷ 多线程有几种实现方法

在java5以前实现多线程有两种方法(继承Thread类和实现Runnable接口)
它们分别为:
使用new Thread()和new Thread(Runnable)形式
第一种直接调用thread的run方法,所以,往往使用Thread子类,即new SubThread()。
第二种调用
Runnable的run方法。
第一种:
new Thread(){}.start();这表示调用Thread子类对象的run方法,new Thread(){}表示一个Thread的匿名子类的实例对象,子类加上run方法后的代码如下:
new Thread(){
public void run(){
}
}.start();
第二种:
new Thread(
new Runnable(){}
).start();
这表示调用Thread对象接受的Runnable对象的run方法,new Runnable(){}表示一个Runnable的匿名子类的实例对象,
runnable的子类加上run方法后的代码如下:
new Thread(new Runnable(){
public void run(){
}
}
).start();

⑸ 多线程的几种实现方法详解

首先线程都是由Thread类来创建的,线程任务实现有2中方式

  1. 继承Thread类

  2. 实现Runnable类


还有一些线程的执行类,可以看看

⑹ 实现多线程都有哪几种方法

1:UI线程。这个线程是操作系统自动创建的,你画了个winform,那么程序一启动,自然有了这么个线程。值得注意的是,你添加一个Timer控件,现实的多线程,实际上,依然在UI线程里。只是定时被Timer夺去控制权而已,本质上依然是单线程。另一个线索也可以论证:本来非UI线程想更新UI界面,是需要利用delegate,involk等来实现的,但是在timer控件的线程里,是不需要的。2:Threadthread=newThread(obj.functionName);thread.start();这样自定义的线程是真正的多线程,它的使用也是最灵活的。不像Timer线程,精确度只有50ms。值得注意的是:如果需要启动的线程函数是带输入参数的,怎么?有两个法:A:你不是启动obj对象里的函数吗?在thread.start();之前,你先添加这句话MyObjectobj=newMyObject(inta,intb);这样,obj.functionName函数里可以直接使用a和b了。还有个方法,就是利用委托封装函数,然后thread.start(参数);具体代码如下:[ComVisibleAttribute(false)](Objectobj)//这个Thread类的构造方法的定义如下:publicThread(ParameterizedThreadStartstart);(Objectobj){Console.WriteLine(obj);}staticvoidMain(string[]args){Threadthread=newThread(myStaticParamThreadMethod);thread.Start("通过委托的参数传值");}3:利用threadpool线程池技术。threadpool的主要原理是池里面的线程不会完成一个任务就消亡,而是会继续执行其他的任务,这减少了线程的消亡和生成的代价。主要是ThreadPool.QueueUserWorkItem()和ThreadPool.RegisterWaitForSingleObject(···)两个静态函数。具体如下:QueueUserWorkItem的使用:staticvoidThreadProc(ObjectstateInfo){Console.WriteLine("Hellofromthethreadpool.");}Main函数里ThreadPool.QueueUserWorkItem(newWaitCallback(ThreadProc));即可。(注意WaitCallback系统委托),它的功能就像第2种方法里提到的newthread。那么RegisterWaitForSingleObject是干什么的呢?这个方法的做用是向线程池添加一个可以定时执行的方法。有点像第一种方法里提到的timer线程,却不属于UI线程。具体的使用如下:AutoResetEventwait=newAutoResetEvent(false);objectstate=newobject();ThreadPool.RegisterWaitForSingleObject(wait,newWaitOrTimerCallback(test),state,5000,false);//5000是间隔调用的时间,也就是wait变量卡住的timeout时间(我觉得内部是这样实现的)wait.Set();//如果有set这句话,那么第一次执行不用等5秒,则直接执行目标函数,否则没这句话,第一次执行要等5秒的。还有一个要注意:我平常使用的是ManualResetEvent,但在threadpool里,首先要选的是AutoResetEvent,因为AutoResetEvent能自动reset,所以下一次间隔来了,又要重新等待5秒钟,达到定时器的目的。如果是ManualResetEvent,要么一次执行不了(初始值为false),要么不间断的玩命执行。ManualResetEvent和AutoResetEvent的另一个重要区别是前者能一次唤醒多个线程,而后者一次只能唤醒一个线程。其实RegisterWaitForSingleObject函数的使用有点想我封装好的MyTimer类的实现了:我里面的while死循环里用了个wait.waitone(2000,false);即可。对了,说到这里,RegisterWaitForSingleObject函数实现的定时器,如果手动停止呢?这要用到Unregister函数:RegisteredWaitHandlerw=ThreadPool.RegisterWaitForSingleObject(wait,newWaitOrTimerCallback(test),state,3000,false);rw.Unregister(wait);嗯讨论了这么多线程的东西,干脆再说一个小点:Thread.IsBackground=true的时候,指示该线程为后台线程。后台线程将会随着主线程的退出而退出

阅读全文

与多线程常用的方法相关的资料

热点内容
活用成词的四种方法有哪些 浏览:757
如何找自己做客观题的方法 浏览:533
全国退休工资计算方法都一样吗 浏览:128
文学意境的分类有哪些方法 浏览:658
研什么方法 浏览:744
同仁堂阿胶的食用方法 浏览:441
皮肤过敏试验有哪些方法 浏览:731
土壤项目检测方法 浏览:159
在家吃豆腐的简单方法 浏览:578
便秘有什么是方法 浏览:564
食用菌事业管理方法 浏览:85
打死结的方法图解步骤 浏览:714
java测试类中的静态方法怎么调用 浏览:160
开关按在哪里设置方法 浏览:794
方法治疗好些 浏览:158
双创课生活中的痛点及解决方法 浏览:38
灭火几种方法视频 浏览:475
血管瘤用药物治疗的方法 浏览:971
挡水板安装方法 浏览:857
电脑清除流氓软件最彻底的方法 浏览:238