A question about the Thread class
the code below are two way of invoke a thread to run:
A:
public class Test {
public static void main(String args[]) {
Thread myThread = new Thread(){
public void run(){
System.out.println("in myThread! \n");
System.out.println(Thread.currentThread());
Thread th = new Thread(myThread,"new Thread");
th.start();
B:
public class Test {
public static void main(String args[]) {
Thread myThread = new Thread(){
public void run(){
System.out.println("in myThread! \n");
System.out.println(Thread.currentThread());
myThread.start();
i have read many free software's source code, and find many people would like to implement it like A instead of B
so my question is why A is better than B.
thanks!!
A is actually using the constructor which accepts a Runnable. In your case, since you are overriding only run(), you could have simply implemented the Runnable and created the thread th. However, in this model you are using a Runnable you are actually separating the task from the Thread. In B, thread is actually the task which couples them tightly. Therefore, from design point of view, A is recommended with Runnable rather than a Thread unless you have specific reasons to do that.
Similar Messages
-
Question about the String class
Did I understood the JLS/Javadoc properly if I say that the String class has got an internal pool of String objects (therefore I expect this pool to be stored in some sort of static variable)?
Looking at the intern() method in the String class, this is declared as native, which make me think the whole pooling thing is managed internally by the JVM.
Does this mean that, if there is only a String class per JVM and String literals (or better Strings that are values of constant expressions) are pooled in the String class, the more String constants are around the bigger the String class object becomes?Did I understood the JLS/Javadoc properly if I say
that the String class has got an internal pool of
String objects (therefore I expect this pool to be
stored in some sort of static variable)?Yes.
Looking at the intern() method in the String class,
this is declared as native, which make me think the
whole pooling thing is managed internally by the JVM.The intern() method is implemented in some programming language. If you happen to have a Java runtime where it is written as a native method, it is probably implemented in C or C++. Not a terribly important detail.
Does this mean that, if there is only a String class
per JVM and String literals (or better Strings that
are values of constant expressions) are pooled in the
String class, the more String constants are around
the bigger the String class object becomes?The String.class object (of type java.lang.Class) as such doesn't "grow", but some memory structure somewhere will contain interned String literals. Probably a hash table of some sort. Yes indeed: if you have String literals in your program, those literals are stored in the computer's memory during runtime so that they can be accessed by the executable program code. -
Question about required workshop classes for OCP
Im working on finishing up my OCP in a few months. Quick question about the workshop class. Is there a test at the end of the week?
Also how do most people pay for these classes? They are pretty steep and my company doesnt pay for stuff like this for me. Im paying totally out of my own pocket. Also why is the online class the same amount as the instructor lead class? Its not like im in a room at some building that Oracle has to lease for use or something.RedDeuce wrote:
Im working on finishing up my OCP in a few months.What Certificate exactly are you working towards?
Also how do most people pay for these classes? They are pretty steep and my company doesnt pay for stuff like this for me. Im paying totally out of my own pocket.Then talk to your employer again or maybe look for other jobs that support your plan better.
Also why is the online class the same amount as the instructor lead class? Its not like im in a room at some building that Oracle has to lease for use or something.They know that you might save on expenses for travel and hotel etc. -
A question about the getProperty method defined in the Security class
Hello Everyone!
I would like to ask a question about the getProperty method defined in the
Security class.
public static String getProperty(String key) Do you know how can I exract the list of all possible keys?.
Thanks in advance,I found the answer, in fact the keys are defined in the java.security file.
-
Some general questions about multi-threading
Hey Everybody,
I have a dilemma with a multi-threaded program that I have written.
Well to be truthful I actually wrote the program with no consideration whatsoever for multithreading.
As a result of this complete lack of concern I get a completely hung user interface.
My program performs a lot of network communications over URL��s and also writes information from URL��s to disk. The combination of networking and I/O in my program and the fact that I have not built multi-threading into the program has lead to complete failure of the user interface. When I say complete failure I mean complete failure. If it were only button��s not responding then I wouldn��t be all that worried, however the entire drawing area of my programs ��Frame�� completely freezes. It��s cool if nothing is maximized or minimized over the frame but as soon as this happens my programs drawing area has a ��serious hang over!��.
I have begun learning about threads, in principle they sound wicked however in practice they have proven to be a brain tease (oops �K.. honesty).
The difficulty of threads should not be all that daunting to me, however I have a couple of very simple questions that I would love to have answered�K..anybody out there!!!!!!!!!
This is the normal basic method of running a thread that I have been attempting to incorporate into my program:
1). Extend the thread class,
2). Override the run() method in the subclass (created from step 1),
3). Create an instance of the subclass,
4). Call the start() method on the instance (from step 3).
I have read that every statement the thread will execute is contained within it��s run() method.
Question 1). This being the case is it possible to have member variables or methods inside a class that extends thread? Please explain!
Question 2). Can a class that extends thread contain a constructor? Please explain!
Question 3). If a subclass of thread cannot contain a constructor as I assume to be the case then how can code executing within the newly spawned thread reference information from the object that spawned it?
If anybody out there on the great net can answer even half of one of these questions I will be more than grateful. Thanks for your time, and rock on Java!
DavidThread t = new Thread(MyRunnableDerivedClass);
t.start();I hope it is understood that MyRunnableDerivedClass is actually an object of the MyRunnableDerivedClass. sorry for the confusion.
so here's a thread that reads from a file using constructors, member variables, other funcs. It's not optimal but shows use of all of the above. I just typed this in so there are probably syntax errors, but you should get the point.
public class ThreadedFileReader implements Runnable
private File m_File;
byte[] contents = new byte[0];
public ThreadedFileReader( File f )
m_File = f;
public void run()
BufferedInputStream bis = null;
try
bis = new BufferedInputStream( new FileInputStream( m_File ));
int avail = bis.available();
while (avail > 0)
int oldLen = contents.length();
contents = expand( contents, avail );
bis.read( contents, oldLen, avail );
avail = bis.available();
catch (Exception e)
{ //do something witty
finally
try{ if (bis != null) bis.close(); } catch (Exception e){}
private byte[] expand( byte[] oldBuf, int addedLen )
byte[] newBuf = new char[oldBuf.length + addedLen];
System.arrayCopy( newBuf, 0, oldBuf, 0, oldBuf.length );
return newBuf;
public byte[] getContents()
return contents;
//here's where we use it
File f = new File( "c:\myfile" );
ThreadedFileReader tfr = new ThreadedFileReader( f );
Thread t = new Thread( tfr );
t.start();
t.join();
// At this point the thread has died, but the thread object still exists
byte [] data = tfr.getContents(); -
Less dumb follow-up question about super/sub classes in WDJ?
This is a follow-up question to the question which Maksim answered in this thread:
Dumb question about super/sub classes in WDJ
Question:
Is there any kind of weird C++-like statement that you can put at the top of a WDJ module to force the module to interpret any reference to superclass A as a reference to some specific subclass B of A ???David,
1. Java has no preprocessor, so C++ tricks are not available. Also I would not recommend such tricks even in C++ if you don't want to turn your colleagues working with same code into personal enemies.
2. The phrase "easier to create a WDJ custom class loader " makes me smile. First, it's not that simple to interfere WDJ class loading scheme. Plus custom class loaders is not trivial Java topic per se.
3. The problem "replace all A-s with B-s" is typically solved using one or another GoF creation patterns, like <a href="http://en.wikipedia.org/wiki/Abstract_factory_pattern">Abstract Factory</a> or <a href="http://en.wikipedia.org/wiki/Factory_method_pattern">Factory Method</a>. You may use them with custom class loader, if you really want to
By the way, all UI controls in WD are created using Abstract Factory (role played by view). So you may use this as good example.
Valery Silaev
SaM Solutions
http://www.sam-solutions.net -
A question about the impact of SQL*PLUS SERVEROUTPUT option on v$sql
Hello everybody,
SQL> SELECT * FROM v$version;
BANNER
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
SQL>
OS : Fedora Core 17 (X86_64) Kernel 3.6.6-1.fc17.x86_64I would like to ask a question about the SQL*Plus SET SERVEROUTPUT ON/OFF option and its impact on queries on views such as v$sql and v$session. Here is the problem
Actually I define three variables in SQL*Plus in order to store sid, serial# and prev_sql_id columns from v$session in order to be able to use them later, several times in different other queries, while I'm still working in the current session.
So, here is how I proceed
SET SERVEROUTPUT ON; -- I often activate this option as the first line of almost all of my SQL-PL/SQL script files
SET SQLBLANKLINES ON;
VARIABLE mysid NUMBER
VARIABLE myserial# NUMBER;
VARIABLE saved_sql_id VARCHAR2(13);
-- So first I store sid and serial# for the current session
BEGIN
SELECT sid, serial# INTO :mysid, :myserial#
FROM v$session
WHERE audsid = SYS_CONTEXT('UserEnv', 'SessionId');
END;
PL/SQL procedure successfully completed.
-- Just check to see the result
SQL> SELECT :mysid, :myserial# FROM DUAL;
:MYSID :MYSERIAL#
129 1067
SQL> Now, let's say that I want to run the following query as the last SQL statement run within my current session
SELECT * FROM employees WHERE salary >= 2800 AND ROWNUM <= 10;According to Oracle® Database Reference 11g Release 2 (11.2) description for v$session
http://docs.oracle.com/cd/E11882_01/server.112/e25513/dynviews_3016.htm#REFRN30223]
the column prev_sql_id includes the sql_id of the last sql statement executed for the given sid and serial# which in the case of my example, it will be the above mentioned SELECT query on the employees table. As a result, right after the SELECT statement on the employees table I run the following
BEGIN
SELECT prev_sql_id INTO :saved_sql_id
FROM v$session
WHERE sid = :mysid AND serial# = :myserial#;
END;
PL/SQL procedure successfully completed.
SQL> SELECT :saved_sql_id FROM DUAL;
:SAVED_SQL_ID
9babjv8yq8ru3
SQL> Having the value of sql_id, I'm supposed to find all information about cursor(s) for my SELECT statement and also its sql_text value in v$sql. Yet here is what I get when I query v$sql upon the stored sql_id
SELECT child_number, sql_id, sql_text
FROM v$sql
WHERE sql_id = :saved_sql_id;
CHILD_NUMBER SQL_ID SQL_TEXT
0 9babjv8yq8ru3 BEGIN DBMS_OUTPUT.GET_LINES(:LINES, :NUMLINES); END;Therefore instead of
SELECT * FROM employees WHERE salary >= 2800 AND ROWNUM <= 10;for the value of sql_text I get the following value
BEGIN DBMS_OUTPUT.GET_LINES(:LINES, :NUMLINES);Which is not of course what I was expecting to find in v$sql for the given sql_id.
After a bit googling I found the following thread on the OTN forum where it had been suggested (well I think maybe not exactly for the same problem) to turn off SERVEROUTPUT.
Problem with dbms_xplan.display_cursor
This was precisely what I did
SET SERVEROUTPUT OFFafter that I repeated the whole procedure and this time everything worked pretty well as expected. I checked SQL*Plus documentation for SERVEROUTPUT
and also v$session page, yet I didn't find anything indicating that SERVEROUTPUT should be switched off whenever views such as v$sql, v$session
are queired. I don't really understand the link in terms of impact that one can have on the other or better to say rather, why there is an impact
Could anyone kindly make some clarification?
thanks in advance,
Regards,
Dariyoosh>
and also v$session page, yet I didn't find anything indicating that SERVEROUTPUT should be switched off whenever views such as v$sql, v$session
are queired. I don't really understand the link in terms of impact that one can have on the other or better to say rather, why there is an impact
Hi Dariyoosh,
SET SERVEROUTPUT ON has the effect of executing dbms_output.get_lines after each and every statement. Not only related to system view.
Here below what Tom Kyte is explaining in this page:
Now, sqlplus sees this functionality and says "hey, would not it be nice for me to dump this buffer to screen for the user?". So, they added the SQLPlus command "set serveroutput on" which does two things
1) it tells SQLPLUS you would like it <b>to execute dbms_output.get_lines after each and every statement</b>. You would like it to do this network rounding after each call. You would like this extra overhead to take place (think of an install script with hundreds/thousands of statements to be executed -- perhaps, just perhaps you don't want this extra call after every call)
2) SQLPLUS automatically calls the dbms_output API "enable" to turn on the buffering that happens in the package.Regards.
Al -
Question about using container class - Map
hi all
i have a question about the following :
i have two sets of data, both use a common filed as key for the map:
A = {a,b,d,f,g,h} and B = {a,d,e,g,i,k}, each key has a value associated with.
i need to find out the commonality, and the difference - i.e fields are in map A but not in Map B, and some fields that are in B but not in A. is there any quick method that comes with the collection class that can calculate this? thanksyes, the keyset will be used to access values.
so, SetA.retainAll(SetB) will modify the SetA so that it contains keys that are in both SetA and SetB - the intersection.
and SetA.removeAll(SetB) will modify the SetA so that it only contains keys that are in SetA, but not in SetB?
correct? -
I got an answer and I replied with a question about the answer, does no show in unanswered
I got an answer and I replied with a question about the answer, does no show in unanswered questions. I guess replying was not the way to get another anwer, How do I do that?
He said - Certain Firefox problems can be solved by performing a Clean reinstall. This means you remove Firefox program files and then reinstall Firefox.
I want to know - Will I still have my bookmarks, history, addons, plugins, etc.? I do not know what plugins and such that I had. What about my pinned tabs and my tabs that where open.
More information - When I try to start Firefox I keep getting the message that I need to restart my computer in order to complete a previous update attempt. I had Sweetpacks on my PC and I do not know where it came from, it took over my home page in Internet Explorer and Ithink caused the issue with Firefox.
Should I do the clean install or try starting Firefox now.Could you please stay in the thread where you posted the question and reply there instead of opening a new thread?
Locking this thread, so please continue here:
*[[/questions/968194]]
See also:
*[[/questions/968222]]
You won't lose bookmarks and other data in the Firefox profile folder as long as you do not remove personal data in case you uninstall Firefox.
See also:
*http://kb.mozillazine.org/Profile_backup
*https://support.mozilla.org/kb/Backing+up+your+information
You can open the Properties of the Firefox desktop shortcut via the right-click context menu and check the "Compatibility" tab.<br />
Make sure that all items are deselected in the "Compatibility" tab of the Properties window. -
CBWFQ: Question about the output of "show policy-map interface" command
Hi everyone,
I have a question about the output of "show policy-map interface" command.
The following is the output of this command and lower side of the output shows
(total queued/total drops/no-buffer drops) 0/342/0
If the packets drop occur due to the situation of no enough buffer,
"no-buffer drops" counted up. But "no-buffer drops" has not been counted up.
The "no-buffer drops" is 0 (zero) but "total drops" are counted as 342.
I guess there are other factors except "no-buffer drops" to add "total drops".
But I can not find any information about "other factors".
So I would like to know the "other factors" added to "total drops".
reserch-3725#sh policy-map interface fastethernet0/1
FastEthernet0/1
Service-policy output: shaping
Class-map: kdpc (match-all)
146956873 packets, 115209221595 bytes
5 minute offered rate 156000 bps, drop rate 0 bps
Match: access-group name YOKOHAMA_to_CHINO
Traffic Shaping
Target/Average Byte Sustain Excess Interval Increment
Rate Limit bits/int bits/int (ms) (bytes)
9360000/9360000 58500 234000 234000 25 29250
Adapt Queue Packets Bytes Packets Bytes Shaping
Active Depth Delayed Delayed Active
- 0 146956724 3539850811 2960247 3851843541 no
Class-map: class-default (match-any)
552458414 packets, 249687580329 bytes
5 minute offered rate 242000 bps, drop rate 0 bps
Match: any
Traffic Shaping
Target/Average Byte Sustain Excess Interval Increment
Rate Limit bits/int bits/int (ms) (bytes)
3072000/3072000 19200 76800 76800 25 9600
Adapt Queue Packets Bytes Packets Bytes Shaping
Active Depth Delayed Delayed Active
- 0 552453209 573909865 30358216 2926188156 no
Service-policy : policy1
Class-map: dlsw (match-all)
979578 packets, 264843255 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: access-group name acl-dlsw
Queueing
Output Queue: Conversation 137
Bandwidth 128 (kbps) Max Threshold 64 (packets)
(pkts matched/bytes matched) 20922/17371500
(depth/total drops/no-buffer drops) 0/0/0
Class-map: telnet (match-all)
29938 packets, 1806058 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: access-group name acl-telnet
Queueing
Output Queue: Conversation 138
Bandwidth 64 (kbps) Max Threshold 64 (packets)
(pkts matched/bytes matched) 639/38900
(depth/total drops/no-buffer drops) 0/0/0
Class-map: class-default (match-any)
551448911 packets, 249420939729 bytes
5 minute offered rate 242000 bps, drop rate 0 bps
Match: any
Queueing
Flow Based Fair Queueing
Maximum Number of Hashed Queues 128
(total queued/total drops/no-buffer drops) 0/342/0
Your information would be appreciated.Details infomatiuon regarding show policy-map interface
http://www.cisco.com/en/US/tech/tk543/tk545/technologies_tech_note09186a008010dd6a.shtml
http://www.cisco.com/en/US/tech/tk543/tk760/technologies_tech_note09186a0080108e2d.shtml
http://www.cisco.com/univercd/cc/td/doc/product/software/ios123/123cgcr/qos_r/qos_s2g.htm#wp1146884 -
Hi,
I have a quick question about the XS key used for Logic. Now, the XS key is a small piece of hardware and it is very susceptible to being misplaced or lost.
If someone were to lose the XS key, how would one be able to obtain another XS Key? Would that person need to buy Logic all over again? Or can they make a special order to get another one based on proof of ownership of Logic?
it's just a small question.
thanks
-JustinThere have been threads about this recently if you search for them.
I think someone said they got theirs replaced for about $80. -
A question about the execution order of java code
I have a question about the order of the execution of java code.
class myclass
String str1 = new String("str1");
static String str2 = new String("str2");
static
String str3 = new String("str3");
myclass( )
String str4 = new String("str4");
static myfuntion()
String str5 = new String("str5");
When I new a myclass object, what is the order of execution about str1,str2.str3 ,str4?
When I run myclass::myfunction( ) instead of new a myclass object what is the execution order about str1, str2, str3, str4, str5?
Thankshello,
I think there may be one thing can't use println to make sure.
class myclass
static { System.out.println("str1"); };
myclass() { System.out.println("str2"); }
then str1 appear before str2
class myclass
static { String str1 = new String("str1"); };
myclass() { String str2 = new String("str2"); }
then
str1 initilized before str2,
str1 get the value str1----->after<----- str2.
Am I right or wrong? -
May someone tell me something about the thread
The ODP.NET document seems to have little words about the thread,or maybe it is the database who deals with the thread. i have some question aboue it.
I define a variable in a package specification,
CREATE OR REPLACE PACKAGE TSTpkg
is
counter NUMBER DEFAULT 0;
END TSTpkg;
then deal with it in a function
FUNCTION addc RETURN NUMBER
AS
cnt NUMBER:=0;
BEGIN
LOOP
EXIT WHEN admin.tstpkg.counter>100;
tstpkg.counter:=admin.tstpkg.counter+1;
cnt:=cnt+1;
END LOOP;
RETURN cnt;
the cnt indicate the number the loop runs,in a single thread program,it will always return 100,for counter is default by 0.Then in C#, i wrote a methord to invoke the funciton"addc" and return the value the function"addc" returns.As far as I am concerned,the variable defined in the package specification should be seen as static element,so if two thread access it, there is just one counter,and the sum of the values return by the two methords invoked in two threads should be 100. But the result is each of the thread returns 100.
How does the database treat the variable defined in the package specification on the earh?And shouldn't I see it as static one ?
Who can tell me truth?3ks very much
(PS: I am Chinese, please forgive me poor engilsh)Hi,
Each database session gets it's own copy of plsql package variables, they're not shared between sessions.
Cheers
Greg -
Re: Question about the Satellite P300-18Z
Hello everyone,
I have a couple of questions about the Satellite P300-18Z.
What "video out" does this laptop have? (DVI, s-video or d-sub)
Can I link the laptop up to a LCD-TV and watch movies on a resolution of 1080p? (full-HD)
What is the warranty on this laptop?Hello
According the notebook specification Satellite P300-18Z has follow interfaces:
DVI - No DVI port available
HDMI - HDMI-out (HDMI out port available)
Headphone Jack - External Headphone Jack (Stereo) available
.link - iLink (Firewire) port available
Line in Jack - No Line in Jack port available
Line out Jack - No Line Out Jack available
Microphone Jack - External Micrphone Jack
TV-out - port available (S-Video port)
VGA - VGA (External monitor port RGB port)
Also you can connect it to your LCD TV using HDMI cable.
Warranty is country specific and clarifies this with your local dealer but I know that all Toshiba products have 1 year standard warranty and also 1 year international warranty. you can of course expand it. -
Questions about the Apple Developer Enterprise Program
Hi there,
i got some questions about the Apple Developer Enterprise Program:
- is there a way a company can create their own "AppStore" with only the APPs the employees should use?
- when I developed the enterprise app are the install files on a apple hosted server or do i need my own infrastructure to distribute my app?
Thanks in advance for answers!Google: MDM
Maybe you are looking for
-
Hi All, I'm struggling with the usage of an URLLoader. The problem is that basically, I need to load SWF's, but if an error occurs (for example, the swf does not exist or the user is not logged in), I want to send a text (JSON) message back to the fl
-
Creator2: IDE dosn't start on my iMac
iMac G5 Mac OS X 10.4.5 JVM 1.5.0 The installation was completed without any error message. After a double click on the application icon 'Creator.app' something happens I think, but I can't see anything. The IDE seems not to be started. Maybe the app
-
[SOLVED] akregator doesn't show images in the preview pane
I have three different PCs with Arch and kdemod-legacy (that is, kde 3.5.9) and on all of them I use akregator (a RSS/Atom feed reader). One of the feed I subscribed is from an image board: when new images are uploaded to the site, I'm notified and c
-
What is best way to report problems, get questions answered?
If we have questions, or think we've found a problem, what is the best way to communicate with Oracle? - This forum? - TARs using our beta CSI number? - emails to [email protected]? - smoke signals? Regards, Steve Locke
-
TIMESTAMP container element in ALRTCATDEF
I have tried to use with the below mentioned container elements from alrtcatdef but nothing was getting displayed in alerts I need the timestamp container element in alrtcatdef to configure as longtext/shorttext, where it can carry the alert triggere