1. C#除了thread.sleep()的延时方法,还有什么延时方法
java是跨平台的,理论上不存在有方法在windows上可以而在linux上不行。你这个可能是你的两个地方JDK或tomcat环境的问题,或者是出现了其他错误,导致linux上没有运行到sleep那一步,或者是代码没有更新到linux上去。
2. Java中Runnable和Thread的区别
Runnable接口和Thread类是java中实现多线程的两种方法。主要区别在于:Thread是类,而Runnable是接口。
抽象类和接口的区别如下:
1. 在类来继承抽象类时,只需实现部分具体方法和全部抽象方法,而实现接口则要实现里面的全部方法。
2. 在接口中无成员变量,而抽象类中可有成员变量。
在Java中引进接口主要是为了解决多继承的问题,实现多线程主要继承Thread 类和实现Runnable接口。
3. 如何在 Thread
在一个Android 程序开始运行的时候,会单独启动一个Process。
默认的情况下,所有这个程序中的Activity或者Service(Service和 Activity只是Android提供的Components中的两种, 除此之外还有Content Provider和Broadcast Receiver)都会跑在这个Process。一个Android 程序默认情况下也只有一个Process,但一个Process下却可以有许多个Thread。
在这么多Thread当中,有一个Thread,我们称之为UI Thread。
UI Thread在Android程序运行的时候就被创建,是一个Process当中的主线程Main Thread, 主要是负责控制UI界面的显示、更新和控件交互。
在Android程序创建之初,一个Process呈现的是单线程模型,所有的任务都在一个线程中运行。因此,我们认为,UI Thread所执行的每一个函数,所花费的时间都应该是越短越好。而其他比较费时的工作(访问网络,下载数据,查询数据库等),都应该交由子线程去执行,以免阻塞主线程。
那么,UI Thread如何和其他Thread一起工作呢?常用方法是:
1.诞生一个主线程的Handler物件,当做Listener去让子线程能将讯息Push到主线程的Message Quene里,以便触发主线程的handlerMessage()函数,让主线程知道子线程的状态,并在主线程更新UI。
2.在子线程的状态发生变化时,我们需要更新UI。
如果在子线程中直接更新UI,通常会抛出下面的异常:
ERROR/JavaBinder(1029):android.view.ViewRoot$:Only the original thread that created a view hierarchy can touch its views.
意思是,无法在子线程中更新UI。
3.我们需要通过Handler物件,通知主线程Ui Thread来更新界面。
如下:
3.1 首先创建一个Handler,来监听Message的事件:
private final int UPDATE_UI = 1;
private Handler mHandler = new MainHandler();
private class MainHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_UI: {
Log.i("TTSDeamon", "UPDATE_UI");
showTextView.setText(editText.getText().toString());
ShowAnimation();
break;
}
default:
break;
}
}
}
3.2
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_UI: {
Log.i("TTSDeamon", "UPDATE_UI");
showTextView.setText(editText.getText().toString());
ShowAnimation();
break;
}
default:
break;
}
}
}
当子线程的状态发生变化,则在子线程中发出Message,通知更新UI。
mHandler.sendEmptyMessageDelayed(UPDATE_UI, 0);
4. 在我们的程序中,很多Callback方法有时候并不是运行在主线程当中的,所以如果在Callback方法中更新UI失败,也可以采用上面的方法。
4. java 中使用线程的方法到底有哪些
都是通过new Thread().start()开启线程,一般有两种方式:1是继承自Thread类,2是实现Runnable接口,第二种方式更加灵活,Java不支持多继承,但是支持多实现。求采纳
5. 1. 写出用Java编写多线程程序的两种常用方法
1、继承Thread,然后生成对象
2、用类A实现runable接口,然后用你实现runnable的类A,生成Thread对象 Thread(A对象);
API 上说明如下:
创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的
run 方法。接下来可以分配并启动该子类的实例。例如,计算大于某一规定值的质数的线程可以写成:
classPrimeThreadextendsThread{
longminPrime;
PrimeThread(longminPrime){
this.minPrime=minPrime;
}
publicvoidrun(){
//
...
}
}
然后,下列代码会创建并启动一个线程:
PrimeThreadp=newPrimeThread(143);
p.start();
创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run
方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。采用这种风格的同一个例子如下所示:
implementsRunnable{
longminPrime;
PrimeRun(longminPrime){
this.minPrime=minPrime;
}
publicvoidrun(){
//
...
}
}
然后,下列代码会创建并启动一个线程:
rimeRunp=newPrimeRun(143);
newThread(p).start();
6. Thread的基本定义
为了正确有效地使用线程,必须理解线程的各个方面并了解Java实时系统。必须知道如何提供线程体、线程的生命周期、实时系统如 何调度线程、线程组、什么是幽灵线程(Demo nThread)。
7. java 线程 有几种创建方法啊 最常用的是哪种啊
继承Thread类和实现Runnable接口
第二种常用。因为如果继承自Thread类的话,java是单继承机制所以就没有办法再继承其他类了。而实现Runnable接口则还可以再继承其他的类。
8. java中runnable和thread的区别
Runnable接口和Thread类是java中实现多线程的两中方法。
Thread类的构造方法有8个,但常用的只有4个,分别为:
Thread类中的两个最主要的方法:
(1)run()—包含线程运行时所执行的代码,即线程需要完成的任务,是线程执行体。
(2)start()—用于启动线程。
实现Runnable接口的类必须使用Thread类的实例才能创建线程。通过实现Runnable接口来创建并启动多线程的步骤:
9. 多线程实现的几种常用的方法
有三种:
(1)继承Thread类,重写run函数
创建:
class xx extends Thread{
public void run(){
Thread.sleep(1000) //线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源
}}
开启线程:
对象.start() //启动线程,run函数运行
(2)实现Runnable接口,重写run函数
开启线程:
Thread t = new Thread(对象) //创建线程对象
t.start()
(3)实现Callable接口,重写call函数
Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。
Callable和Runnable有几点不同:
①Callable规定的方法是call(),而Runnable规定的方法是run().
②Callable的任务执行后可返回值,而Runnable的任务是不能返回值的
③call()方法可抛出异常,而run()方法是不能抛出异常的。
④运行Callable任务可拿到一个Future对象,Future表示异步计算的结果。它提供了检查计算是否完成的方法,以等
待计算的完成,并检索计算的结果.通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果